Frage

Ähm ... wie verwende ich Variablen in einem Aufruf von preg_replace?

Das hat nicht funktioniert:

foreach($numarray as $num => $text)
    {
        $patterns[] = '/<ces>(.*?)\+$num(.*?)<\/ces>/';
        $replacements[] = '<ces>$1<$text/>$2</ces>';
    }

Ja, die $num durch ein Pluszeichen vorangestellt. Ja, ich will "tag the $num as <$text/>".

War es hilfreich?

Lösung

Ihr Ersatz Muster sieht ok, aber wie Sie einfache Anführungszeichen in dem entsprechenden Muster verwendet haben, Ihre $ num Variable wird nicht in sie eingefügt werden. Stattdessen versuchen

$patterns[] = '/<ces>(.*?)\+'.$num.'(.*?)<\/ces>/';
$replacements[] = '<ces>$1<'.$text.'/>$2</ces>';

Beachten Sie auch, dass, wenn ein Muster von „unbekannten“ Eingängen wie folgt aufgebaut, es ist in der Regel eine gute Idee zu verwenden preg_quote . z.

$patterns[] = '/<ces>(.*?)\+'.preg_quote($num).'(.*?)<\/ces>/';

Obwohl ich den Variablennamen gegeben denke, es ist immer numerisch in Ihrem Fall.

Andere Tipps

Variablen werden nur in preg_quote wenn Ihre Variablen regulären Ausdruck meta Zeichen enthalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top