Salut,
ich versuche gerade, Smilies auf meiner Seite zu integrieren, dafür habe ich folgende Funktion geschrieben:
Code
function dosmilies($text) {
$smiliessemicolon = array(";)" => "smilie03.gif",
";-)" => "smilie03.gif");
// lower case for keys!
$smiliesdot = array(":)" => "smilie0 1.gif",
":-)" => "smilie0 1.gif",
">:)" => "smilie04.gif",
">:-)" => "smilie04.gif",
":devil:" => "smilie04.gif",
":p" => "smilie06.gif",
":-p" => "smilie06.gif",
":d" => "smilie02.gif",
":-d" => "smilie02.gif",
":-(" => "smilie05.gif",
":(" => "smilie05.gif",
":o)" => "smilie07.gif",
":o" => "smilie07.gif"
);
$pos = strpos($text, ":", 0);
while($pos != false) {
//$pos2 = strrpos($text, "<pre>", $pos);
//if(($pos2 == false) || (strrpos($text, "</pre>") > $pos2))
//{
reset($smiliesdot);
while (list ($key, $val) = each ($smiliesdot))
{
if(strtolower(substr($text, $pos, strlen($key))) == $key) {
$temp = "<img src=\"img/smilies/".$val."\" border=\"0\" alt=\"$key\" />";
$text = substr($text, 0, $pos).$temp.substr($text, $pos + strlen($key));
$pos += strlen($temp);
break;
}
}
//}
$pos = strpos($text, ":", $pos + 1);
}
return $text;
}
Alles anzeigen
Diese ersetzt aber natürlich im gesamten Text die entsprechenden Kürzel durch die Bilder. Zwischen den Anfangs- und End-Tags von <pre> und <input> möchte ich das aber verhindern.
Also wollte ich die auskommentierten Zeilen einfügen. Bei der ersten erhalte ich aber den Fehler, dass zu viele Parameter angegeben seien. Scheinbar unterstützt meine PHP-Version (4.4) noch nicht den offset-Parameter.
Daher meine Frage: Wie kann ich anders rückwärts suchen (bleibt mir nur die manuelle Version mit einer Schleife) oder gibt es gar eine weitaus effizientere Möglichkeit, die Smilies zu ersetzen?
Danke im Voraus,
Stefan