Mr.Luke: preg_match_all - Fehler in Expression (PHP)?!

Beitrag lesen

Danke!

Die korrigierte Fehlerbeschreibung: Maskierung in Regulär Expressions fehlerhaft. :)

Leider hat die Maskierung nicht funktioniert, d.h. ich erhalte immer ein leeres Array.

Hier die korrigierte Funktion ....
preg_match_all("#{if[start]}(.*?){if[ende]}#", $String, $Array);

Hier ein Ausschnitt aus dem HTML Template ...
{if[start]}
  <tr>
    <td class="title">{object_area_lbl}</td>
    <td class="text">{object_area_val}</td>
  </tr>
{if[ende]}

Kann es damit zusammenhängen, dass im (.*?) Teil auch noch weitere Platzhalter existieren? Diese werden mit einem einfachen str_replace() mit Informationen ersetzt.

Gruß,
Mr. Luke

Hi,

Leider klappt das bei dieser Expression icht. Ich denke es liegt an den Sonderzeichen {} oder [],

exakt.

aber auch wenn ich diese mit \ maskiere dann funktioniert es nicht :(

Du bringst Zeichen wie "[" oder "{" in einen RegExp-Kontext, musst sie also RegExp-spezifisch kodieren. Das hast Du fast vollständig durchgeführt. Anschließend bringst Du diese RegExp in den String-Kontext, musst sie also String-spezifisch kodieren. Und in Zukunft vergiss bitte nicht die Fehlerbeschreibung - "funktioniert nicht" war noch nie eine und wird auch niemals eine sein.

Cheatah