str_replace
Thomas
- php
0 Alexander (HH)0 Tom0 Ulrich
Hallo zusammen
Ich habe ein Gästebuch gebaut, und möchte nun, dass bestimmte Worte ([lachen],[weinen],[böse]) durch smileys ersetz werden.
Habe das so gelöst,
$array_1 = array("[lachen]","[weinen]","[böse]");
$array_2 = array("<img src=img/smileys/1.gif>","<img src=img/smileys/2.gif>","<img src=img/smileys/3.gif>");
for($x=0;$x<18;$x++){
$text = str_replace($array_1[$x],$array_2[$x],"$dsatz[text]");
}
echo "<p>" . $text . "</p>";
Was ist hier falsch..? denn die [böse] bleiben einfach stehen und es geschiet nichts.
lg thomas
Moin Moin!
Was ist hier falsch..? denn die [böse] bleiben einfach stehen und es geschiet nichts.
Umlaut-Kodierung (UTF-8, ISO-8859-1, HTML Entity)?
Du erzeugst übrigens ungültiges HTML. Attribut-Werte sollten unbedingt in Quotes stehen (Zahlen dürfen auch ohne Quotes stehen), und das IMG-Tag erfordert zwingend ein ALT-Attribut.
Alexander
Hallo,
Du erzeugst übrigens ungültiges HTML. Attribut-Werte sollten unbedingt in Quotes stehen (Zahlen dürfen auch ohne Quotes stehen)
Fast, es dürfen zumindest alle zahlen und buchstaben ohne Quotes stehen auch ein Punkt und einige andere. Bei seinem Beispiel macht aber der Slash alles kaputt. Ich hab gerade das hier erfolgreich validieren lassen:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<title>HTML validation</title>
<img src=bar.png alt=test>
Jeena
Hello,
$array_1 = array("[lachen]","[weinen]","[böse]");
$array_2 = array("<img src=img/smileys/1.gif>","<img src=img/smileys/2.gif>","<img src=img/smileys/3.gif>");for($x=0;$x<18;$x++){
$text = str_replace($array_1[$x],$array_2[$x],"$dsatz[text]");
}echo "<p>" . $text . "</p>";
Was ist hier falsch..? denn die [böse] bleiben einfach stehen und es geschiet nichts.
Du benötigst keine Schleife.
Str_Replace() hat eine "eingebaute Schleife" für Arrays.
http://de2.php.net/manual/en/function.str-replace.php
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Moin,
Ich habe ein Gästebuch gebaut, und möchte nun, dass bestimmte Worte ([lachen],[weinen],[böse]) durch smileys ersetz werden.
Was hältst Du denn hier von:
$smilies = array();
$smilies['[lachen]'] = "/foo/lachen.gif";
$smilies['[weinen]'] = "/foo/weinen.gif";
$smilies['[boese]'] = "/foo/boese.gif";
...
Dann den Text entsprechend bearbeiten:
$string = smiliesEinfuegen($string, $smilies);
Die entsprechende Funktion:
function smiliesEinfuegen($string, $smilies) {
foreach($smilies as $code => $value) {
$smilie = "<img src=\"$value\" alt=\"$code\" />";
$string = str_replace($code, $smilie, $string);
}
return($string);
}
Das hätte den Vorteil, dass Du nur einen Array brauchst, und es deutlich übersichtlicher mit den Codes und den GrafikURIs ist und Du gleich ein passendes alt Attribut generierst.
Ist nicht getestet, sollte aber funktionieren.
mit freundlichen Grüßen
Ulrich