Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pattern do regexa
Forum PHP.pl > Forum > PHP
Raven1122
Witam,

mam taki pattern:

  1. $msg = "http://www.facebook.com";
  2. if(preg_match('/^http:\/\/+www.+[a-z0-9]+.pl|.com|.org|.eu$/', $msg, $matches)){
  3. print_r($matches);
  4. }


print_r zwraca tylko:
Array ( [0] => .com )

Co zrobic aby w tablicy byl jesczze protokol i host?
Czyli zeby bylo

Array ( [0] => http:// )
Array ( [1] => www. )(opcjonalnie)
Array ( [2] => facebook )
Array ( [3] => .com )
sowiq
Użyj parse_url + np. explode. Będzie prościej, nie pogubisz się w przypadku subdomen i pewnie będzie to działało szybciej.
cudny
Użyj praseUrl, to fakt.

Co do twojego regexpa to jest beznadziejne (sorry za szczerość tongue.gif )

Kilka rzeczy, które tak na szybkiego wychwyciłem:

1 pomiędzy | używaj nawiasów - będzie bezpieczniej
2 przed kopką musisz dać \ czyli \. bo kropka to wszystkie znaki oprócz znaku końca linii stąd com ci wyświetla pomimo błędnego regexpa
3. każdą wartość w tablicy rozdzielasz nawiasem
4. www nie zawsze jest, powinieneś dać (www\.)?
5. [a-z0-9]+ nooo, a co jeśli tam jest, np. myślnik, lub inne znaki dopuszczalne w url ?
6. http - a jeśli to ssl ? Powinno być http(s)?:\/\/

I wiele innych błędów, już nie chce mi się szukać smile.gif
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.