PDA

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?

Gast
2007-02-23, 02:45:16
push