Suchmuster-Modifikatoren
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
-
<? $sql = "SELECT code,name FROM smilies"; $result = mysql_query($sql); while($row = mysql_fetch_assoc($result)) { $muster[] = "/".$row['code']."/i"; $ersetzen[] = "<img src=\"images/smilies/".$row["name"].".gif\" />"; } $text = preg_replace ($muster, $ersetzen, $text); ?>
Das ist ein Teil des codes. Und zwar habe ich die Smiley-Codes in einer Datenbank gespeichert. Nun wollte ich fragen ob es einen Suchmuster-Modifikator gibt, der verhindert, dass z.b. "; )" nicht ersetzt wird. Momentan gibt es da noch Probleme mit den Zeichen. Oder muss ich es doch per str_replace machen? Wollte es eigentlich so haben, dass man auch gro?schreiben kann.
Beitrag ge?ndert am 19.09.2005 00:09 von i-spacke -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
lol, wie zum himmelswillen willst du ;) gro?schreiben? kannste mir das mal bitte zeigen?
soweit ich wei?, gibt es in mysql keine funktion die das ersetzen des codes macht, ist ja auch, oder w?hre ja auch schwachsinn.
du musst es schon per replace machen, da das ja die haupt?chlche funktion zum ersetzen in php ist.
du kannst zwar die codes per mysql amchen, aber warum nicht einfach die abfragezeile der replace einfach includen?
wenn du da sagst mysql enfacher verwarlten etc. ok, ist dein ding, fehler hab ich eigentlich ekinfe im code von dir gefunden beim ?berfliegen...
MfG
Kraeusi -
Also so wie es dort oben ist funktioniert es schon mal nicht. Smilies mit komischen Zeichen (also Klammer,Semikolon...) werden nicht richtig replaced. Und das mit dem Gro?schreiben war ja auch nur auf :EEK: oder so bezogen...
-
i-spacke schrieb:
Also so wie es dort oben ist funktioniert es schon mal nicht. Smilies mit komischen Zeichen (also Klammer,Semikolon...) werden nicht richtig replaced. Und das mit dem Gro?schreiben war ja auch nur auf :EEK: oder so bezogen...
Achtung: Klammern M?SSEN in regul?ren Ausdr?cken escaped werden, da ihnen zwei verschiedene Bedeutungen zustehen.
So d?rfte Dein Code funktionieren:
<? // Code $muster[] = "/". addcslashes(addcslashes($row['code'], "("), ")" ))."/i"; // restlicher Code ?>
Dieser COde setzt vor jede Klammer ("(" und ")") ein Backslash.
-
<? $muster[] = "/".addcslashes(addcslashes($row['code'], "("), ")" )."/i"; ?>
So ist es richtig. Du hast dort eine Klammer zu viel. Aber trotzdem danke. Jetzt gehts es richtig. :D
Beitrag ge?ndert am 19.09.2005 19:02 von i-spacke -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage