Willkommen in der Webstatt Zum Webstatt Blog und Stories
mab mab am 10.05.07 13:48

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

Danke und Gruß,
mab

netcup.de Warum gibt es hier Werbung?
der_nic der_nic am 10.05.07 13:53

das sollte funktionieren... ($1 ist der Wert des Attributes $2 dann der Wert dazwischen)
$pattern = "/{tpl name="([^"]+)"}([^{]+){\/tpl}/";

mab mab am 10.05.07 14:43

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?

nuit nuit am 11.05.07 13:01

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...

mab mab am 11.05.07 21:08

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,
mab

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt