Hi.
Möchte Folgendes mit preg_replace bzw. regex umsetzen.
{tpl name="test"}Irgendwas{/tpl}.
1. den Wert aus dem Attribut name auslesen (test)
2. den Wert zwischen {tpl.... } {/tpl} auslesen.
Hat mir jemand ne Funktion? Möchte eigentlich XML Parser etc. vermeiden und die Funktion möglichst klein halten
xyz-48ke und Gruß,
xyz-126
das sollte funktionieren... ($1 ist der Wert des Attributes $2 dann der Wert dazwischen)
$pattern = "/{tpl name="([^"]+)"}([^{]+){\/tpl}/";
danke, das hat aber leider einen fehler erzeugt.
habs nun erst mal so gemacht:
preg_match("/{tpl name=\"(.*?)\"}(.*?){\/tpl}/", "hallo {tpl name=\"test\"}asd{/tpl}", $string);
wenn ich jetzt das pattern auf folgenden string anwende:
$string = " viel text {tpl ...} test {/tpl} ";
ist es jetzt auch möglich das pattern aus $string zu entfernen? mit str_replace würde das natürlich gehen, aber geht das auch gleich mit preg_match`?
----------------------
EDIT: okay, das hab ich jetzt erst mal gelöst. regex nervt schon wieder. :) ich möchte die zeichenkette nur matchen wenn am Anfang kein { steht und am Ende kein }
praktisch: [^{] (.*?) [^}]
hat mir jemand auf Anhieb ne Lösung?
klar erzeugt das einen fehler.......wiel {} sonderzeichen sind
/\{tpl name=\"(.*?)\"\}(.*?)\{\/tpl\}/is
der sollte funktionieren ;)
mit preg_macht kannst du nicht entfernen...entweder über preg_replace...oder du matcht es mit preg_match_all und entfernst es dann über ein str_replace ;)
mhh...
danke, aber is eigentlich schon klar, dass ersetzen nur mit preg_replace geht :)
sehr seltsam, mit [^] läuft es jetzt. der fehler lag irgendwie am string selbst.
vg,
xyz-126