Ich habe eine kleines Problem mit preg_replace. Ich habe einen String, der ein Formular beinhaltet (jeweils von-bis Felder) und wie folgt aussieht (verkürzte Form!):
Über eine foreach-Schleife lasse ich die Value-Felder mit str_replace gegen den gespeicherten Wert austauschen. Habe ich z.B. den Bis-Wert von Attribut 26 noch nicht gespeichert, so bleibt "[filter_attr_b26]" in dem Value-Feld stehen.
Wie muss die Pattern von preg_replace (o.ä.) aussehen, damit ich alle Value-Werte mit Platzhaltern entferne: "[filter_attr_XXX]" ?
Das Problem ist das dies hier in der Codeanzeige nicht zu sehen ist. Ich gehe mal davon aus, das der Kollege das auch korrekt escapt hatte aber der Codeblock dies wie bei mir geschluckt hat ... das erste /[filter ist korrekterweise ein /[filter und das letzte +]/ ist korrekterweise ein +]/ ... das Backslasch "escapet" das folgezeichen, was normalerweise im RegEx eine Funktion hat und daher ansonsten nicht in einem RegEx genutzt werden kann ... Bitte also nicht nur einfach Copy&Paste aus der Anzeige hier, sondern entsprechend noch anpassen. Liegt leider hier an der Anzeige das es falsch rüberkommt. Ich hab das RegEx übrigens noch einmal gekürzt, damit man nicht mit einem Array arbeiten muss ;) --- es wird trotzdem korrekt beides entfernt ...
$string ist dein Quellcode aus dem das geparst werden soll ... $result das Ergebnis.
edit mist ich sehe gerade das auch im kommentar das backslash geschluckt wurd ... ich hab es dir als Grafik hinterlegt ...
Ja, aber der RegEx klappt nicht 100%. Der erste Wert wird komplett entfernt und beim zweiten bleibt "[filter_attr_b" im Value stehen. Nich die feine Art, aber diesen Teil habe ich nun mit einem einfachen str_replace entfernt. ;)