• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Teile eines Strings farbig machen

brainiac

Neues Mitglied
Hi! Ich wollte wissen, wie es möglich ist, ein Teil eines Strings farbig zu machen, wo ein Wert eines array vorkommt.

Viele Grüße
Jonathan
 
Werbung:
Das kannst du mit einem regulären ausdruck machen und dann über preg_replace.
Schau dir mal mein beispiel hier an und dann schau dir folgendes an: PHP: preg_replace - Manual
PHP:
<?php
    $string = "Hallo mein Schatz ich leibe dich *sing*";
        
        $suche = array("/(Hallo)/","/(leibe)/");
        $ersetz = array("<span class=\"importantText\">$1</span>", "liebe");
        
        echo preg_replace($suche, $ersetz, $string);
        
?>
 
So macht der immer nur das letzte (Die ersten überschreibt der). Gibt es nicht noch etwas zuverlässigeres?

Viele Grüße
Jonathan
 
Werbung:
So macht der immer nur das letzte (Die ersten überschreibt der). Gibt es nicht noch etwas zuverlässigeres?

Viele Grüße
Jonathan
Bei mir ersetzt er alles im String:

PHP:
<?php
    $string = "Hallo du da Hallo du da";
        
        $such = array("/(Hallo)/","/(du)/");
        $replace = array("$1oooohooo","$1didu");
        
        echo preg_replace($such, $replace, $string);
?>
 
Falls du vor hast ein Script für Syntax-Highlighting zu schreiben spar dir die Mühe und benutze eine der ~ 10.000 schon vorhandenen PHP-Klassen.

Greetz
 
Ich habs jetzt geschafft, aber ganz anders :D Ich glaube, ihr habt mich nicht direkt verstanden. Egal.

Viele Grüße
Jonathan
 
Werbung:
PHP:
    // text farbig hervorheben
function highlight($text,$words)
{
    if($words == "") return $text;

    $words = split(':',$words); //
    $color=array("5AE6FF","BDB76B","90EE90","FA8072","EE82EE","B1B1B1","ADD8E6"); // 7 Farben muessen reichen, sonst trag doch mehr ein... :-)
    for($i = 0; $i < sizeof($words); $i++)
    {
        $s = $words[$i];
        $t=$text;
        $c=$color[$i];
        // $s case-insensitive in $t hervorheben: based on http://www.dclp-faq.de/q/q-regexp-ersetzen.html
        $text=preg_replace("/((<[^>]*)|$s)/ie", '"\2"=="\1"? "\1":"<span style=\"background-color: #$c\">\1</span>"', $t);
    }
    return $text;
}

$words="test:knopf:zelle";
$testtext = "Das ist ein Testtext und der wird über einen Knopf und eine Zelle handeln...";
$text = highlight($testtext,$words);
echo $text;
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben