Hallo Leute,
sieht hier jemand den Fehler?
Folgendes soll geschehen:
Ich lasse Content aus einer DB in $text holen. Dann sollen alle Links gesucht und wie folgt ersetzt werden:
Die targets "_blank" und "_self" sollen auf "right" gesetzt werden (funktioniert auch),
die URL in href="..." soll ausgelesen und ersetzt werden durch "links_edit.php4?string=" + die ursprüngliche URL mit base64 codiert, damit die Leer- und sonderzeichen bei der Überhabe keinen unsinn machen.
Es funnktioniert auch alles schon so weit bis auf dass nur normale URLs wie "www.domain.de" erkannt und ersetzt werden. Sobald ein "?" drin vorkommt, z.B. in home.php4?id=50 wird diese nicht ersetzt.
Komischerweise erkennt preg_match_all die aber exakt und wenn ich $url ausgebe, stehen die URLs auch richtig drin. Nur bei dem letzten ereg_replace() wird diese nicht erkannt.
Hat da jemand eine Lösung ???
Soweit mein Script:
preg_match_all("#<a href=\"(.*)\" target=\"(.*)\">(.*)</a>#isU",$text,$matches); // alle Links finden
$total = count($matches[1]);
$text = ereg_replace("target=\"(_blank|_self)\"","target=\"right\"",$text); // ersetzt alle Targets
for ($i=0; $i < $total; $i++){
$url = $matches[1][$i];
$text = ereg_replace("href=\"".$url."\"","href=\"links_edit.php4?string=".base64_encode($matches[0][$i])."\"",$text);
}
Grüße & Dank,
Andi
sieht hier jemand den Fehler?
Folgendes soll geschehen:
Ich lasse Content aus einer DB in $text holen. Dann sollen alle Links gesucht und wie folgt ersetzt werden:
Die targets "_blank" und "_self" sollen auf "right" gesetzt werden (funktioniert auch),
die URL in href="..." soll ausgelesen und ersetzt werden durch "links_edit.php4?string=" + die ursprüngliche URL mit base64 codiert, damit die Leer- und sonderzeichen bei der Überhabe keinen unsinn machen.
Es funnktioniert auch alles schon so weit bis auf dass nur normale URLs wie "www.domain.de" erkannt und ersetzt werden. Sobald ein "?" drin vorkommt, z.B. in home.php4?id=50 wird diese nicht ersetzt.
Komischerweise erkennt preg_match_all die aber exakt und wenn ich $url ausgebe, stehen die URLs auch richtig drin. Nur bei dem letzten ereg_replace() wird diese nicht erkannt.
Hat da jemand eine Lösung ???
Soweit mein Script:
preg_match_all("#<a href=\"(.*)\" target=\"(.*)\">(.*)</a>#isU",$text,$matches); // alle Links finden
$total = count($matches[1]);
$text = ereg_replace("target=\"(_blank|_self)\"","target=\"right\"",$text); // ersetzt alle Targets
for ($i=0; $i < $total; $i++){
$url = $matches[1][$i];
$text = ereg_replace("href=\"".$url."\"","href=\"links_edit.php4?string=".base64_encode($matches[0][$i])."\"",$text);
}
Grüße & Dank,
Andi
Kommentar