Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenie regularne - pomoc - usuwanie linków
Forum PHP.pl > Forum > PHP
Kojak
Witam. Mam pewien problem. Próbuję napisać wyrażenie regularne które usuwa z podanego tekstu wszystkie linki. Usuwanie linków które objęte są znacznikami <a>...</a> mam napisaną i dobrze działa. Ale ponadto chciałem mieć jeszcze usuwanie linków bez <a> (np. http://forum.php.pl lub www.php.net). Próbowałem coś takiego:

  1. $text = 'testowy adres: http: //www.wp.pl, a tu jest jeszcze jakis tekst'; // między http: a slashem tutaj celowo dałem spację bo robi z tego hiperłącze na forum, normalnie nie ma tam odstępu
  2. $text = preg_replace("/(http|ftp|news)s?:\/(.+)(\s){1}/i", "", $text);
  3. echo $text; // testowy adres: tekst


Problem jest taki że powinien przy pierwszej spacji kończyć, ale on szuka do ostatniej. Co jest źle w tym wyrażeniu regularnym?

Z góry dziękuję za pomoc.
nospor
nie: .+
a: .*?
Kojak
Dzięki, działa smile.gif

Ale jeszcze jedna sprawa... jak mam jeden link i on kończy stringa (np: "jakiś tam tekst http: //www.wp.pl") to już nie usuwa, bo nie znajduje spacji. Jak zrobić alternatywę że sprawdza aż napotka spację lub napotka koniec stringu?
nospor
No to poprostu dodaj ten koniec
/(http|ftp|news)s?:\/(.*?)(\s|$)/i

A mozesz tez wogole powiedziec: wszystko tylko nie spacja
/(http|ftp|news)s?:\/[^\s]+/i
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.