Antworten auf deine Fragen:
Neues Thema erstellen

str_replace & array

Z

zYannickz

Guest

Hallo,
ich bin schon den ganzen morgen am grübeln, kann das problem aber leider nicht lösen.
Ich möche mit str_replace bestimmte wörter rot erscheinen lassen.
PHP:
$KEYWORDS = array(PHP, HTML, Java);
$code = "PHP ist Toll!";
$code = str_replace($KEYWORDS, "<span style=\"color:#ff0000;\">".$KEYWORDS."</span>", $code);
Leider funktioniert die Methode nicht.
Ausgegeben wird immer nur das Wort 'Array' in rot.
In dem Array soll deutlich mehr als PHP, HTML usw. stehen, über 200 Begriffe.
Wie kann ich das lösen?
Vielen Dank
mfg
Yannick
 

Duddle

Posting-Frequenz: 14µHz

AW: str_replace & array

Siehe PHP: str_replace - Manual
Ist search ein Array und replace ein String, dann wird dieser String für jeden Wert von search angewandt.

Da du einen String mit deinem Array konkatenierst, wird der gesamte replace-Parameter als String gesehen und daher werden deine Suchwörter mit Array ersetzt. Die Lösung ist, jedes Wort einzeln zu ersetzen:
PHP:
foreach($KEYWORDS as $value) {
	$code = str_replace($value, "<span style=\"color:#ff0000;\">".$value."</span>", $code);  
}


Duddle
 

sokie

Mod | Web

AW: str_replace & array

schau dir die funktion PHP: str_replace - Manual einfach mal im manual an.
da wird genau beschrieben, was wohin gehört.
als erstes muss dein suchstring hinein - also $code,
dann das. wodurch der suchstring ersetzt werden soll - also das"<span style=\"color:#ff0000;\">"

und zuletzt das, worin gesucht und ersetzt werden soll also dein array $KEYWORDS.

eine Empfehlung kann noch sein, auf variablennamen in Grossbuchstaben zu verzichten, weil diese Schreibweise eigentlich eher für Konstanten verwendet wird(erhöht die Übersicht enorm).

 
Z

zYannickz

Guest

AW: str_replace & array

Danke für eure Antworten.
Habs mit der Lösung von Duddle Probiert und es klappt. Danke :)
Die Manual hatte ich mir schon angeschaut, hat mir aber leider nicht geholfen, Google hatte mir leider auch keine Lösung gebracht. Keine Ahnung warum ich nicht von alleine auf die Lösung gekommen bin. Manchmal Übersieht man einfach die simpelsten Lösungen.
mfg
 
Z

zYannickz

Guest

AW: str_replace & array

Ich kann leider nicht den Button "als gelöst markieren" nicht finden, wo ist der denn?
 

netbandit

Aktives Mitglied

AW: str_replace & array

Ich hätte es wahrscheinlich so oder so ähnlich gemacht:

PHP:
$KEYWORDS = array('PHP', 'HTML', 'Java');
$code = 'PHP ist Toll, Html, naja ... geht so und Java kann ich nicht!';
$code = preg_replace('/(' . implode('|', $KEYWORDS) .  ')/Uis', '<span style="color:#ff0000;">\\1</span>', $code);

Grüße
 
Z

zYannickz

Guest

AW: str_replace & array

Danke, werde ich auch mal ausprobieren.
Jetzt habe ich noch das Problem, wenn ich mehrere Arrays habe,soll z.B. das Wort 'HP' blau werden. Aber dann wird PHP ja zweifarbig, und das soll es nicht.
 

Duddle

Posting-Frequenz: 14µHz

AW: str_replace & array

Dann musst du nach ganzen Wörtern suchen. Das ist mit einem einfachen str_replace nur schwer möglich. Zum Glück gibt es reguläre Ausdrücke. Die haben unter anderem ein nettes Zeichen \b, mit dem Wortränder erkannt werden können.

Du musst dann preg_replace statt str_replace nutzen und dein Suchwort anpassen:
PHP:
$red = array('PHP', 'Java');
foreach($red as $suchwort) {
	$str = preg_replace("/\b".$suchwort."\b/", "<span style='color:red'>".$suchwort."</span>", $str);
}

Du suchst dann also nach bspw. "/\bPHP\b/" statt "PHP". Dabei sind die beiden / an Anfang und Ende die Begrenzer für den regulären Ausdruck und die \b sind wie gesagt besondere Suchzeichen.


Duddle
 
Z

zYannickz

Guest

AW: str_replace & array

Hallo Duddle,
danke nochmals, das Klingt auch sehr gut habe auch schonmal versucht mit regulären ausdrücken zu beschäftigen, leider keine INet Seite gefunden, wo es für mich verständlich erklärt worden ist. Kennt jemand gute Seiten um RegEx zu lernen?
Werde in der nächsten Woche leider nicht dazu kommen es aus zu probieren.
Danke für die vielen guten Lösungen.
mfg Yannick
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben