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