preg_match
mir
- php
moin
ich check einfach nicht die doku dazu :-(
deshalb frag ich nach dem einfach beispiel, wie man rausfinden kann, was ~ ist, wenn * beliebige platzhalter sind:
irgendwas*vor dem platz_halter~und_nach dem platzhalter*
wie kann ich nun herausfinden, was anstelle von ~ steht unter berücksichtigung, dass eine solche konstruktion öfter im text vorkommt?
danke
Hä??
Schreib mal nen Beispiel Code!!
<a href="irgendein_link.html"><img src="testbild.jpg"></a>
<a href="noch_ein_link.html"><img src="testbild2.jpg"></a>
<a href="letzter_link.html"><img src="testbild3.jpg"></a>
hierbei sollten diese werte ausgelesen werden:
testbild.jpg
testbild2.jpg
testbild2.jpg
wie geht denn sowas?
Hi,
preg_match("#<a href="[^"]*"><img src="([^"]*)"></a>#",$text,$match);
dannach stehen dann in $match die Bildadressen drin.
" ist ein 'escaped' ", sonst kriegt man kein " in einen mit " begrenzten String.
[^"] ist eine Zeichenklasse, die aus allen Zeichen ausser " besteht.
[^"]* ist eine möglichst lange Zeichenkette die aus allen Zeichen ausser " besteht.
([^"]*) speichert das ganze, hier damit es in $match[1] bis $match[count($match)] landet.
alle anderen Zeichen stehen für sich selber.
Ungetestet.
Gruss,
Carsten
nochmal hallo...
hab nun den ganzen nachmittag damit verbracht, den code passend umzuformen!
erfolglos!!!!!
so sieht der html code aus:
<html>
<img src="../../PicDestStyleOver_List_Cross/Y23055_262.jpg" width="150" hspace="0" vspace="0" border="0"
alt="te
xt
">
<img src="../../PicDestStyleOver_List_Cross/Y23055_262.jpg" width="150" hspace="0" vspace="0" border="0"
alt="bla
zeile2bla
">
</html>
der probierte php code sieht momentan so aus:
preg_match_all("#<img src="([^"]*)"*>#",$text,$match);
bekanntlich will ich nur die src parameter der img tags herausfinden...
warum lässt mich php das nicht einfach tun :-( ?!
*verzweifel*
vielen dank für hilfe!!!!!
Hi
preg_match_all("#<img src="([^"]*)"*>#",$text,$match);
^^
das ist falsch!
Du meintest wohl
preg_match_all("#<img src="([^"]*)".*>#",$text,$match);
^^^
beliebig viel von einem beliebigen Zeichen und dann ein >
Das wäre aber auch falsch, denn das * (beliebig viel) ist gierig und frisst dir praktisch den gesammten Quelltext weg (alle bis auf das letzte > werden vom .(dem beliebigen Zeichen) gematcht): Du würdest nur einen Treffer bekommen. (Das erste <img...)
Eigentlich kannst du das aber komplett weglassen, also so:
preg_match_all("#<img src="([^"]*)"#",$text,$match);
Gruss,
Carsten
P.S.: 'ungieriges' suchen wäre mit .*?