Denkfehler bei PHP / regexp?

S

SirDodger

Matrixrunner
Moin Moin!

Ich habe ein Problem, an dem ich nun schon seit 2 Tagen sitze und ich langsam kein Land mehr sehe... :-(

Ich habe einen 130k großen HTML-Text, in dem ca. 50 Links drinstehen, die zu 80% eine falsche Syntax haben. (Weniger die Syntax, aber der Aufbau der QueryStrings hat sich geändert.

Jetzt wollte ich mir mit PHP eine Funktion zusammenbauen, die alle diese Links in ein Array pumpt, damit ich die dann umschreiben kann und anschliesend ein REPLACE auf die DB loszulassen ...

Aber so langsam gehen mir die Ideen aus und der fitteste in regexp bin ich - ehrlich gesagt - auch nicht. :-(

Kann mir vielleicht jemand unterstützend zur Seite stehen?

Gruß,
Bodo
 
also ohne garantie.... ja:

Code:
 preg_match_all('/href=\"[a-zA-Z0-9\.\/_\-\"\:\?\=\&]*/i',$code,$things);

anschließend sollte man nochmal über das array iterieren und die href=" dingens abtrennen.

hab den für nen php spider verwendet, und der funktioniert eigentlich ganz gut. Mag sein, dass er aber nicht auf alle Links passt. Also er ist bestimmt nicht RFC Konform ;) aber n versuch ists wert
 
Zuletzt bearbeitet:
Danke dir!
Werde ich gleich mal antesten! :-)

Ich bin gerade über das hier gestolpert: http://www.the-art-of-web.com/php/parse-links/ ... das scheint auch ziemlich brauchbar für meine Zwecke zu sein. :)

Ist ist Licht am Ende des Tunnels ...

Der Artikel ließt sich ziemlich nett. Schön, dass dort auf leerzeichen (um die = Zeichen) und auch auf singlequots/hochkommata geachtet wird.

Alles in allem, sollte dich folgender Regex glücklich machen.
Code:
/<a\s[^>]*href\s*=\s*([\"\']??)([^\" >]*?)\\1[^>]*>(.*)<\/a>/siU

Gruß
 

Ähnliche Themen

Squid nur zum maskieren der eigenen IP, nicht für Webserver auf port 80

Zurück
Oben