Ich habe einige HTML, die mehrere HTML-Kommentare enthält, in jedem Kommentar ist ein Formular. Ich versuche, preg_replace zu verwenden, um diese Kommentare und die darin enthaltenen Formulare durch ein Tag in der Form [CONTACT_FORM_X] zu ersetzen, wobei X die numerische ID des Formulars ist.PHP Regex - ersetzen, aber erhalten numerischen Wert von ersetzten Zeichenfolge
$str = 'blah blah blah <!-- CONTACT FORM START [CONTACT_FORM_1] -->some form goes here<!-- CONTACT FORM END 1 --> blah blah blah <!-- CONTACT FORM START [CONTACT_FORM_2] -->another form goes here<!-- CONTACT FORM END 2 -->';
$replace = preg_replace('/<!-- CONTACT FORM START \[CONTACT_FORM_\d\] -->.*<!-- CONTACT FORM END \d -->/', '[CONTACT_FORM_X]', $str);
echo $replace;
So:
<!-- CONTACT FORM START [CONTACT_FORM_1] -->some form goes here<!-- CONTACT FORM END 1 -->
Sollte mit vollständig ersetzt werden sollte [CONTACT_FORM_2]
vollständig mit [CONTACT_FORM_1]
Und ..
<!-- CONTACT FORM START [CONTACT_FORM_2] --> another form goes here<!-- CONTACT FORM END 2 -->
ersetzt werden ich f Ich betreibe meinen Code über die ich erhalten:
blah blah blah [CONTACT_FORM_X]
Also meine Fragen sind:
Wie kann ich den Wert von \ d bekommen und diese dann verwenden anstelle von, wo ich zur Zeit X verwenden in mein preg_replace
Mein Code scheint nur eine der Formen anstelle von beiden Vorkommen zu ersetzen. Wie kann ich preg_replace anpassen
@ chris85 Sie haben Recht. Ich habe. Der Ausdruck 'Sollte ersetzt werden 'verweist auf einen Teilstring, der nicht' blah blah blah 'enthält (überprüfe das OP noch einmal) – BeetleJuice
Oh, unklar in diesem Fall. Ich füge meiner Antwort auch noch eine Notiz hinzu. – chris85