2012-04-09 14 views
1

Ich habe diese Regex alle URLs passen und funktioniert super:preg_replace_callback Regex alle Urls und vermeiden Bilder

$regex ='@((https?://)([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.\,]*(\?\S+)?)?)*)@';       
return preg_replace_callback($regex, 'replacing' , $content); 

Ich brauche innen Spiel Urls zu vermeiden: src="***" und <a href="">***</> wollen den Text zu halten, aber url zu ersetzen.

Ich habe versucht: das Hinzufügen Negation meiner regex:

$regex ='@((?!src="|?!>)(https?://)([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.\,]*(\?\S+)?)?)*)@'; 

erste Negation, wenn URL mit src Startin wird =“ zweite Negation ist, wenn zwischen einem href a href>

Irgendwelche Ideen ist macht es?

+0

Was ist '(?! Src =" |?!>)? "Vielleicht wollten Sie' (? kirilloid

Antwort

0

Ein Ort, guter Ausgangs ist lib_autolink die die <a> Griffe und für den <img> Fall leicht angepasst werden kann. es ist nicht trivial und vielleicht unmöglich t o tue dies in einer einzigen Regexp-Datei, es sei denn, du kannst garantieren, dass der HTML-Code einwandfrei ist (keine streuen Anführungszeichen im Text usw.).