reg-ex & preg_match.. wtf?

smoxx

Grünschnabel
Hi
Ich versuche gerade in einem HTML-File alle Bilder zu finden... habe zum allerersten Mal mit so ner verketteten reg-ex gearbeitet --> die reg-ex wird wohl auch das Problem sein:

PHP:
if (! $string = '%<img.*src="?(.*)"?.*/?>%isU') die("no string");  
if (! preg_match_all($string, $Body, $finds)) die("no preg_match");

for( $k=0; $k < count($finds[0]); $k++)
{
 echo ($finds[0][$k].'<br>\n'.$finds[1][$k]);
}

Output ist entweder "no preg_match" oder einfach garkein Output - obwohl da img-tags drin sind :suspekt:
Kann mir da jemand nen Hinweis geben? Wäre super.
 
Probier mal folgenden Perl-kompatiblen Regulären Ausdruck:
Code:
/<img[^>]*\ssrc=(["[^"]+"|'[^']+'|[^"'\s>]+)[^>]*>/is
Damit bekommst du allerings auch die Anführungszeichen der Attributwertdeklaration, die noch entfernt werden müssten:
PHP:
if( preg_match_all('/<img[^>]*\ssrc=(["[^"]+"|\'[^\']+\'|[^"\'\s>]+)[^>]*>/is', $string, $matches, PREG_SET_ORDER) ) {
	foreach( $matches as &$match ) {
		if( $match[1]{0} == '"' || $match[1]{0} == "'" ) {
			$match[1] = substr($match[1], 1, -1);
		}
	}
	echo $match[1];
}
 
wow, ich krieg endlich output der sich sehen lassen kann

HTML:
<body>
<img src=" ..ein pic habt ihr.. ">
<img src=" ..bestimmt auch 2 oder 5 oder + ..">
</body>

PHP:
if (! $file = file("1.html")) die ("no html");
if (! $data = implode("", $file)) die ("no data");
if (! $string = "%<img[^>]*\ssrc=[^>]*>%is" ) die("no string");  

if (! preg_match_all($string, $data, $matches, PREG_SET_ORDER)) die("no preg_match");
{		
	$startstring = "%(?:<img[^*]src=\")%is";  
	$endstring = "%(?:\">)%isU";
	
// Ausgabe der Belegung im Ausgabefenster
	foreach ($matches as $value) 
	{
		echo $value[0]. " <= ";
		$url = preg_replace($startstring,$n,$value[0]);
		$url = preg_replace($endstring,$n,$url);
		echo $url."<br><hr>";
	}
}

ich = stolz ;-)
danke für die reg-ex gumbo - hat nicht ganz funktioniert aber hat mir den weg korrekten gezeigt..kannst du mir noch verraten wieso es \ssrc statt \src heißen muß :confused: check ich noch immer net

jemand konstruktive kritik? her damit leute
 
Zurück