Hallo,
Wenn der User eh schon den Namen des Smileys (der gleichzeitig auch der Name der Bilddatei ist) angeben muß, dann ersetz doch einfach #name# per RegExp durch <img href=" ... name...></img>
Wäre doch das simpelste, oder?
RegExp kenn ich nicht.
Übliche Abkürzung für "Regular Expression"
<?PHP
$var = "Bischen Blabla #name# bischen blabla";
echo $var;
echo "<br>";
$var = ereg_replace ("(#)([a-z]*)(#)","IMG\2IMG",$var);
Warum hast du um # Klammern gemacht ?
Um die Teilung zu verdeutlichen.
Und was soll ([a-z]*) bedeuten ?
Ist ein Fehler, muß ([a-z]+) heißen. Das andere funktioniert zwar auch, verarbeitet dann aber leere ("##") auch.
Sind eine Menge > 0 an beliebigen Kleinbuchstaben am Stück.
Für eine kurze Übersicht (Die aber für das meiste ausreicht) siehe auch
http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm
(Ist zwar für Perl aber der Unterschied zu PHP ist nicht sonderlich, außerdem gibt es für die ereg_* Funktionen auch Perlkompatible, die dann preg_* heißen.
(ereg_* sind die nach POSIX Schema)
Aber eine Frage habe ich selber noch:
Wie hast Du Deinen ursprünglichen Code eigentlich geschrieben?
Oder nenn ich es beim Namen: Wo hast Du ihn rauskopiert?
so short
Christoph Zurnieden
PS: einen Nachteil meiner Methode darf ich nicht verschweigen: er benötigt jeweils einen Buffer so groß, wie der Text ist.
Außerdem weiß ich jetzt nicht, ob es in PHP eine Möglichkeit gibt, die kompilierte RegEx zu cachen.