preg_replace()

jackobo

Grünschnabel
Abend,

kann mir hier jemand sagen was hier nicht stimmt

PHP:
$eintrag = "xxx(:-&xxx:-O";
$suchmuster= array("/(:-&/", "/:-O/");
$ersatz = array("<img src=\"images/smilies/smiley_annoyed.gif\" border=\"0\" alt=\"(:-&\" title=\"(:-&\" style=\"margin:3px;\" />", "<img src=\"images/smilies/smiley_astonished.gif\" border=\"0\" alt=\":-O\" title=\":-O\" style=\"margin:3px;\" />");
$eintrag = preg_replace($suchmuster, $ersatz, $eintrag);
echo "$eintrag";

Fehlermeldung: Warning: Compilation failed: missing ) at offset 4 in xxx on line 5

gruess jackobo
 
Die öffnende Klammer ist ein spezielles Zeichen und muss mit \ ausmaskiert werden:

$suchmuster= array("/\(:-&/", "/:-O/");

dann sollte es klappen.

Gruß

Marian
 
so wie es aussieht bin ich doch noch nicht ganz am ziehl :confused:

wen ich das ganze nun weiter führe:
PHP:
$suchmuster= array("/\(:-&/", "/:-O/", "/:-o/", "/?:-)/", "/|-)/", "/,-)/", "/:-(/", "/X-)/", "/P-)/", "/>-)/","/:-}/");
bekomme ich noch einige Fehlermeldungen mehr :(

kann mir jemand eine seite oder so empfehlen wo beschrieben ist wie ich spezielle zeichen richtig angeben muss?

danke, gruess jakobo
 
da mir dem anschein nach niehmand helfen kann, habe ich hier noch die fehlermeldungen....hoffendlich hilft dies weiter.


PHP:
$eintrag = "xxx(:-&xxx:-O";
$suchmuster= array("/\(:-&/", "/:-O/", "/:-o/", "/?:-)/", "/|-)/", "/,-)/", "/:-(/", "/X-)/", "/P-)/", "/>-)/","/:-}/");
$ersatz = array("zu lange angaben, darum geb ich sie hier nich an.....");
$eintrag = preg_replace($suchmuster, $ersatz, $eintrag);
echo "$eintrag";


Warning: Compilation failed: nothing to repeat at offset 0 in xxx on line 10

Warning: Compilation failed: unmatched parentheses at offset 2 in xxx on line 10

Warning: Compilation failed: unmatched parentheses at offset 2 in xxx on line 10

Warning: Compilation failed: missing ) at offset 3 in xxx on line 10

Warning: Compilation failed: unmatched parentheses at offset 2 in xxx on line 10

Warning: Compilation failed: unmatched parentheses at offset 2 in xxx on line 10

Warning: Compilation failed: unmatched parentheses at offset 2 in xxx on line 10


line 10 = echo "$eintrag";

gruess jackobo
 
Ich glaube du hättest mehr Erfolg, wenn du str_replace() nehmen würdest. Da musst du dich nicht mit regulären Ausdrücken herumschlagen und es würde für deinen Zweck genauso gut funktionieren.

Gruß Marian
 
Hi,
die schliessenden Klammern musst du natürlich auch maskieren.
Und Fragezeichen natürlich auch...
Maskiere überdiese die geschweifte schliessende Klammer.
Maskiere die Pipe -> |

Du solltest vielleicht mal ein wenig in den Regex-regeln stöbern... :)
Generell gilt: alle Zeichen, die auch eine weiterführende Bedeutung im REGEX-Suchmuster haben, müssen mit \ maskiert werden, wenn du nach ihnen suchst.
Das gilt im übrigen auch für den Backslash -> \ . (\\)

ohne Test, ohne Garantie:
$suchmuster= array("/\(:-&/", "/:-O/", "/:-o/", "/\?:-\)/", "/\|-\)/", "/,-\)/");

greetz
pk
 
Zuletzt bearbeitet:
Zurück