Mailinglisten-Archive |
Björn Schotte wrote: > ... der aber auch nicht so mag, wie ich es > gerne haette: Die Expression =<a href="(.*)">(.*)</a>= matched alle URLs, die in Anführungszeichen stehen und den Text im URL-Container. Die Expression =<a href=(\S+)\s>(.*)</a>= matched alle URLs, die nicht in Anführungszeichen stehen und den Text im URL-Container. In beiden Fällen können natürlich noch weitere Sachen Bestandteil des Tags sein, sodaß man diese ggf. bewahren muß. Es muß also =<(a.*)href="(.*)"(.*)>(.*)</a>= =<(a.*)href=(\S+)\s(.*)>(.*)</a>= heißen. Man kann die beiden Ausdrücke wegen der Bildungsregeln für URLs unifizieren, und bekommt =<(a.*)href="?(\S+)"?\s(.*)>(.*)</a>=i Anker 1 ist ist dann der Tag plus führende Attribute, Anker 2 die URL, Anker 3 die folgenden Attribute und Anker 4 ist der Inhalt des Containers. Die i-Option macht preg_match() case insensitive. Den Inhalt von Anker 2 kann man dann parse_url() zum Fraße vorwerfen. Also while(!feof($fp)) { $zeile = fgets($fp, 1024); $i=1; while(preg_match('=(.*)<(a.*)href="?(\S+)"?\s(.*)>(.*)</a>(.*)=i', $zeile, $txt)) { $url = parse_url($txt[2]; $zeile = sprintf("...", ...); // abrakadabra. $i++; } fputs($fp1, $zeile); } Kris "http://www.koehntopp.de/kris/images/id_kk.jpg" tian -- Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00 Using PHP3? See our web development library at http://phplib.shonline.de/ (GPL)
php::bar PHP Wiki - Listenarchive