URL-Regexp Problem

Haruka

Mitglied
Hi

ich hab - mal wieder - ein RegExp-Problem... diesmal in php...

das Problem ist: ich lese Einträge aus einer Datenbank (die nicht von mir ist) aus... in den Results sind manchmal auch URLs enthalten, die teilweise ein wenig, mh, W3C-fremd sind...

Beispiel:
Code:
<a href=http://www.blubbel.de/pfad/datei.php?irgend=wastarget=\"_blank\">

Ist natürlich kein Zustand... per preg_replace() hätte ich halt gerne sowas:
Code:
<a href="http://www.blubbel.de/pfad/datei.php?irgend=was" target="_blank">

Kann mir da einer weiterhelfen?
 
Was soll an dem aus dem ersten Beispiel gefiltertem URL http://www.blubbel.de/pfad/datei.php?irgend=wastarget= W3C-fremd sein?

Probier mal Folgendes:
PHP:
preg_replace('/<a href=([^"\s]+)\s*target=\\"([^\\]+)\\">/', '<a href="\\1" target="\\2">', $string)
 
Gumbo hat gesagt.:
Was soll an dem aus dem ersten Beispiel gefiltertem URL http://www.blubbel.de/pfad/datei.php?irgend=wastarget= W3C-fremd sein?

keine Anführungszeichen? Kein Leerzeichen zwischen Parameter und Target-Anweisung? Gib das so mal in den Browser ein - der wird dir was husten ^^

Gumbo hat gesagt.:
Probier mal Folgendes:
PHP:
preg_replace('/<a href=([^"\s]+)\s*target=\\"([^\\]+)\\">/', '<a href="\\1" target="\\2">', $string)

Mh, liefert mir folgenden Fehler:
Code:
<br/>
<b>Warning</b>
:  Compilation failed: missing terminating ] for character class at offset 39 in 
<b>/home/sailormoon/public_html/news/newsrss.php</b>
 on line 
<b>43</b>
 
In URL sind keine Anführungszeichen erlaubt. Nur Zeichen des ASCII-Zeichensatzes sind in URL erlaubt.

Probier mal folgenden Perl-kompatiblen regulären Ausdruck in obigem Konstrukt: /<a href=([^"\s]+)\s*target=\x5C"([^\x5C]+)\x5C">/.
 
Gumbo hat gesagt.:
In URL sind keine Anführungszeichen erlaubt. Nur Zeichen des ASCII-Zeichensatzes sind in URL erlaubt.

Nur, dass die target-Anweisung nicht mehr zur URL gehört ;)

Gumbo hat gesagt.:
Probier mal folgenden Perl-kompatiblen regulären Ausdruck in obigem Konstrukt: /<a href=([^"\s]+)\s*target=\x5C"([^\x5C]+)\x5C">/.

Nein, mag er auch nicht akzeptieren... aber ich hab das jetzt einfach umgangen ^^;
 
Zurück