php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Regex Url


 
bloodyorchid
05-04-2011, 18:41 
 
Hi Ihr,
hab die SuFu schon genutzt aber nichts passendes gefunden :eek:

Ich will via regex Urls entfernen. Aber keine '<a href="" />'.

Beispiel:
'example.com' wird komplett entfernt. Da nicht immer ein www. oder ähnliches davor steht, muss ich mich wohl oder übel auf die endungen konzentrieren. Also quasi alles was .com, .de, .net etc. betrifft.

Hab schon ein Array für alle möglichen Endungen. Aber Regex ist immernoch ein Buch mit 49 Siegeln. Also ein Buch mit 7 Siegeln hoch 2 ;)

Hoffe ihr könnt mir da helfen. :)

 
Kropff
05-04-2011, 19:50 
 
Wenn du dich mal genauer ausdrückst gerne. Also du willst URLs entfernen. Aber nicht in einem <a>-Tag? Oder wie soll ich das verstehen? Geht es um absolute oder externe Verlinkungen oder was?

Peter

 
sEeb
05-04-2011, 20:50 
 
links findest du über den regulären ausdruck

$regexp =
'/'.
'(?#Protocol)'.
'((?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?)'.
'(http:\/\/)'.
'((?#Username:Password)'.
'(?:\w+:\w+@)?)'.
'((?#Subdomains)'.
'(?:(?:[-\w]+\.)+)'.
'(?#TopLevel Domains)'.
'(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))'.
'((?#Port)'.
'(?::[\d]{1,5})?)'.
'((?#Directories)'.
'(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?)'.
'((?#Query)'.
'(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*)'.
'((?#Anchor)'.
'(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?)/';

wenn du es umständlich willst kannst du diesen so erweitern, dass er a-Tags erkennt und ignoriert
wenn du es einfacher willst suchst du erst nach allen a-Tags ersetzt sie durch platzhalter,entfernst dann alle links und ersetzt dann die Platzhalter wieder

finden von a-Tags
$regexp2 = '/<a[^>]*href="([^"]*)"[^>]*>/';

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:07 Uhr.