Mailinglisten-Archive |
Hallo Reinhold!
Probiers mal mit folgendem:
preg_match("/$var_anfang(.*)$var_ende/",$daten,$matches);
Die Fehler die ich in deiner RegExp sehe :
- "/^($var_anfang.....
Das ^ sagt preg_match das direkt vor ($var..... der Anfang des zu
durchsuchenden Textes ist. Was ja nicht stimmt.
- ($var_anfang)*
Damit sagst du aus das alles was in den Klammern steht (Subpattern) 0
oder beliebig oft vorkommen kann, ok, war vielleicht gewollt aber blöd
weil du den Inhalt zwischen $var_anfang und $var_ende ja nur dann haben
willst wenn auch diese vorhanden sind. Danach folgt jedoch sofort ([...
also nichts zwischen $var_anfang und $var_ende.
- über die () wird nicht nur ein Subpattern definiert sondern auch
gesteuert was du zurückbekommst. Da du $var_anfang und $var_ende ja
nicht haben willst brauchst du auch keine Klammern darum.
Ich könnte hier noch tausende Sachen schreiben.....
LG
Robert
Reinhold Riedersberger wrote:
> Hallo ,
>
> ich möchte mittels "preg_match" die Zeichenkette extrahieren die
> zwischen
>
> $var_anfang="<anfang>";
> $var_ende="<ende>";
>
> steht.
>
> $daten="Dies ist ein Teststring<anfang>Datenmenge 1<ende> zum Testen der Funktion.";
>
> Mein RegExp sieht wie folgt aus:
>
> // Extrahiere den Text zwischen $var_anfang und $var_ende
> preg_match("/^($var_anfang)*([^$var_ende]+)/i", $daten, $matches);
>
>
> funktioniert aber leider nicht. Da RegExp nun wirklich nicht meine
> Stärke ist, bin ich für jede Hilfestellung dankbar.
>
>
php::bar PHP Wiki - Listenarchive