Archiv verlassen und diese Seite im Standarddesign anzeigen : preg_replace: replace value will nicht
phenix
2007-02-20, 11:49:32
<?php
$str = ':[name]:';
$vars = array("name" => "fred");
echo preg_replace('/\[(.*?)\]/', $vars['\\1'], $str);
?>
Ich hätte erwartet, dass :fred: ausgegeben würde... stattdessen bekomme ich ::
Kann mir jemand sagen wo der Fehler liegt?
phenix
darph
2007-02-20, 11:58:45
Weil du die Warnungen ausgeschaltet hast:
Notice: Undefined index: \1 in [...]preg.php on line 5
::
pehnix
2007-02-20, 12:08:48
Weil du die Warnungen ausgeschaltet hast:
Oha... Ist das die neue Standard apache Einstellung?
Und wie mache ich, dass $vars['name'] ausgewählt wird?
Ich meine \\1 bzw. $1 ist doch name
darph
2007-02-20, 12:12:09
Oha... Ist das die neue Standard apache Einstellung?
Und wie mache ich, dass $vars['name'] ausgewählt wird?
Ich meine \\1 bzw. $1 ist doch name
Nein, das ist nur die Regel, wie es ersetzt werden soll. Das ist aber noch nicht der fertig verarbeitete Ersetzungsstring.
Wenn du $vars["name"] sshreibst, dann funktioniert es. Aber erst bei der eigentlichen Ersetzung wird das \1 wieder eingefügt. Dort ist es im Moment nur eine Ersetzungsregel.
phenix
2007-02-20, 12:42:10
Also geht das was ich machen will so nicht?
Muss ich dann so was wie preg_replace_callback verwenden? Oder wie?
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.