Autor | Zpráva | ||
---|---|---|---|
Peter123 Profil * |
#1 · Zasláno: 25. 2. 2012, 12:37:41
Zdravím, hladám regulárny výraz, ktorý dokáže nahradiť nasledujúce reťazce z textu za lubovolný text, napr: --url--.
example.com example.com/ example.com/dwdwd example.com/qdqdq?d=555&aaaa=apap example.com/?d=555&aaaa=apap + tie isté príklady ale na subodménach www.example.com abc.def.example.com . . . a tiež s rôznymi protokolmi http:// ftp:// . . . Objavil som regexp, ktorý rieši velké množstvo variacií $output = preg_replace("~(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'.,<>?«»“”‘’]))~", "--url--", $input); ale nerieši napríklad example.com alebo example.com/
Ak máte nejaké zaujímavé riešenia, budem rád ak ich pošlete :) |
||
Str4wberry Profil |
#2 · Zasláno: 26. 2. 2012, 12:57:33
„ale nerieši napríklad example.com alebo example.com/“
To většinou ani není žádoucí řešit, protože považovat všechny řetězce bez mezer, ve kterých je tečka, za URL může začít přinášet nežádoucí nahrazení. Například v situaci, kdy by ve vstupu bylo zmíněno jméno souboru s příponou nebo někdo neuměl oddělovat tečku za větou mezerou. |
||
Časová prodleva: 11 let
|
0