Teilstrings herausfiltern

rernanded

Erfahrenes Mitglied
Hi,
habe unten drei Codeschnipsel mit denen ich aus der src Teilstrings herausfiltern kann. Die Versionen liefern leider immer nur den ersten gefundenen Teilstring. Die 2. und 3. Version sind einander 99%ig ähnlich. Soweit so gut.

Mit welcher Version und Änderungen kann ich nun folgende Aufgabe lösen:

In meiner src steht der Quellcode einer kompletten html-Seite. Darin enthalten sind URLs(http://www.beispiel.com).
Die URLs haben aber auch andere TopLevel-Endungen wie .de, .org, .info usw.

Wie krieg ich alle angezeigt?
MONI


PHP:
$src = "ddd http://ccc.com eee fff hhh http://www.elias.com ggg 123"; 
 $regex = "/http[^com]*com/"; 
 preg_match($regex, $src, $match); 
 echo $match[0];

$src = "ddd http://ccc.com eee fff hhh http://www.elias.com ggg 123"; 
$anfang = strpos($src, "http"); 
$ende = strpos($src, "com");
$rest = substr($src, $anfang, ($ende-$anfang)+3); 
echo "$rest";


$src = "ddd http://ccc.com eee fff hhh http://www.elias.com ggg 123";  
$anfang = strpos($src, "http"); 
$ende = strpos($src, "com")+3;
$rest = substr($src, $anfang, $ende-$anfang); 
echo "$rest";
 
Zuletzt bearbeitet:
Du hast als erstes Beispiel Regex benutzt, aber nur match (also einmal finden), dazu gibt es noch preg_match_all()
PHP:
$src = "ddd http://ccc.com eee fff hhh http://www.elias.com ggg 123"; 
 $regex = "#(http://[^\s$]+)#"; 
 preg_match_all($regex, $src, $match); 
echo "<pre>";
var_dump($match); 
echo "</pre>";
In der von mir geschriebenen Regex endet eine url entweder mit Leerzeichen oder Zeilenende. Wenn die URLs in Deinem Sourcecode eine andere Gemeinsamkeit haben, dann würde ich das Pattern eher darauf umschreiben - zB Du suchst die Urls, die in einem Link-Tag geschrieben sind (a href="url")

mfg chmee
 
Zurück