phpbar.de logo

Mailinglisten-Archive

[php] Regex-Problem

[php] Regex-Problem

Tim TConnect at gmx.net
Die Sep 22 09:59:42 CEST 2009


Hallo liebe Liste,

ich habe mal wieder ein Problem mit einem RegEx Ausdruck. Was mich dabei
verwundert ist, dass dieser im RegexCoach problemlot trifft, im PHP
Script dann aber nicht mehr. Es geht um folgendes:

Ich möchte in einen beliebigen (HTML-)Fließtext Serienfelder einbauen,
die dann durch Werte aus der Datenbank ersetzt werden sollen. Dabei
mache ich mir die CLASS-Eigenschaft des SPAN Tags zunutze.

<span class="my-field--lastname">[Nachname]</span>


Über einen regulären Ausdruck möchte ich nun an die Zeichenkette
"lastname" heran kommen, damit ich das gesamte SPAN durch ebendiesen
ersetzen kann.

Im RegexCoach habe ich folgende Pattern:

<span[^>]*my-field--([a-z_]*).*</span>


Ich suche also nach einer Zeichenkette, die mit <span beginnt, dann
beliebig oft kein > hat, dann die Zeichenkette my-field-- aufweist, dann
beliebig oft die eine Zeichenkette a-z und den Unterstrich besitzt,
danach dann irgendwie weiter geht (eigentlich kommen dort noch
style-Einstellungen) und dann irgendwann mal mit </span> endet. 

Setze ich das Ganze als Pattern in preg_match_all() ein, erhalte ich in
der entsprechenden Match-Variabel in erster Ebene des Arrays alle Spans
mit den Eigenschaften wie gewünscht, aber in der Untergruppe dann eine
leere Zeichenkette.

Bei dieser Variante

<span[^>]*my-field--([a-z_]+).*</span>

also statt [a-z_]* so [a-z_]+

bekomme ich nur den ersten Buchstaben des jeweiligen Feldes. Also hier
"l". Was mich wundert, denn ich dachte, dass das + bedeutet, dass
mindestens ein oder mehr Zeichen gefunden werden. Mehr wundert mich,
dass es mit dem Sternchen gar nicht klappt.

Vielleicht habt ihr ja eine Idee?


Grüße
Tim







php::bar PHP Wiki   -   Listenarchive