PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit regexp



kaptain iglo
29-07-2010, 10:47
Hi,

ich habe Probleme mit einer regular expression.
Folgender Fall:
In einem String sollte jeder Tag der lautet:
<a href="LINK_BEISPIEL">link</a>
extrahiert werden. Ich muss an das LINK_BEISPIEL herandkommen.

Soweit so gut.
Mein Code sieht so aus:

$beispiel = '<a href=\"(.*)\">';

preg_match_all($beispiel, $beschreibung, $matches);


Das funktioniert nur teilweise. Aus unbekannten Grund greift z.B. der String

zwischen einer <a href="Arten_Formen_Adoption">offenen</a>, <a href
nicht.
Kann mir jemand sagen warum nicht?

msi
29-07-2010, 11:16
Hi,

ich habe Probleme mit einer regular expression.
Folgender Fall:
In einem String sollte jeder Tag der lautet:
<a href="LINK_BEISPIEL">link</a>
extrahiert werden. Ich muss an das LINK_BEISPIEL herandkommen.

Soweit so gut.
Mein Code sieht so aus:

$beispiel = '<a href=\"(.*)\">';

preg_match_all($beispiel, $beschreibung, $matches);


Das funktioniert nur teilweise. Aus unbekannten Grund greift z.B. der String

zwischen einer <a href="Arten_Formen_Adoption">offenen</a>, <a href
nicht.
Kann mir jemand sagen warum nicht?

.* ist eine greedy operation. deshalb nimmt er soviel er kann.
du kannst .* durch .*? ersetzen, das ist dann non-greedy und er nimmt so wenig wie möglich oder du ersetzt das .* durch [^"]* nimmst also so viele zeichen wie möglich außer ".

außerdem ist der \ bei dir zu viel und
so wirds funktionieren:


$beispiel = '/<a href="(.*?)">/';
preg_match_all($beispiel, $beschreibung, $matches);

kaptain iglo
29-07-2010, 11:45
Danke.
Es sieht gut aus.