Sorry, aber tuts leider nicht...
Ausgabe:
Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) )Mhmm, das ist komisch. Bei mir hats mit einer Test-HTML-Datei geklappt. Bist du sicher, dass $haystack auch HTML-Text als Inhalt hat? Wenn ja, wie sehen die Links im Quelltext aus? Möglicherweise sind noch einige Attribute mehr drin als nur "href". Dann müsste man den RegEx anpassen.
MffG
EisFuX
Hi Eisfux,
Hier ein umgesetzter Originallink:
<A HREF="http://www.domain.de/verz/uverz1/uverz1a/datei.html" TARGET=_blank>Linktext</A> (rauskopiert aus $haystack, daher noch die Backshlashes.
Würde mich gerne mit Deinem Ansatz befassen. Der ist mir irgendwie sympatisch.
Ich habe jetzt mal analog mit dem Ansatz von dieser Seite experimentiert und das wie folgt umgesetzt:
http://www.php-faq.de/q/q-regexp-links-finden.html
----------------------- schnipp -----------------------------------
$pattern = '=^(.*)<a(.*)href="?(\S+)"([^>]*)>(.*)</a>(.*)$=msi';
while (preg_match($pattern, $zeile, $txt))
{
/* $txt[3] enthält die gewünschte URL. */
echo $txt[3]."\n";
$link = explode("/",$txt[3]);
$rest = substr($link[4], 0, 5); // für Kontext unwichtig
$f= substr($link[4], 5, 1); // für Kontext unwichtig
$t=substr($link[6], 0, 6); // für Kontext unwichtig
if (für kontext unwichtige anweisung) {
$link_neu="<a href="$link[0]/$link[1]/$link[2]/$link[3]/script.php?f=$f&t=$t" target=_blank]$txt[5]</a>";
}
/* $zeile neu bauen */
$zeile = $txt[1].$link_neu.$txt[6];
}
/* $zeile zur Kontrolle ausgeben */
print "<br>".nl2br($zeile);
----------------------- schnipp -----------------------------------
Problem hierbei ist nicht nur, daß ich den Regex gar nciht kapiere, sondern auch, daß es in einer Endlosschleife endet, klarerweise.
Wenn ich die < und > testhalber in [ und ] umwandel, funktioniert es tadellos.
Trotzdem ist mir der Code von EisFux lieber, weil ich ihn eher verstehe.
Grüße, Gerd