Skocz do zawartości

Walidacja adresu www


PawelC

Rekomendowane odpowiedzi

Hej :D

Chcę stworzyć walidacje adresu www, i mam takie wyrażenie:

<?php
preg_match_all ('/^(http|https|ftp)://(([A-Z0-9][A-Z0-9_-]*)(.[A-Z0-9][A-Z0-9_-]*)+)(:(d+))?//i', $site, $wynik);
print_r($wynik);
?>

I wszystko ładnie pięknie tylko cały czas zamiast znalezionych adresów wyświetla mi:

Array (	 [0] => Array		 (		 )	  [1] => Array		 (		 )	  [2] => Array		 (		 )	  [3] => Array		 (		 )	  [4] => Array		 (		 )	  [5] => Array		 (		 )	  [6] => Array		 (		 )  )

Gdzie popełniam błąd? Chcę aby wyświetlał znalezione adresy. Robię też tak:

<?php
foreach($wynik as $key){
echo $key;
}
?>

I wywala mi:

ArrayArrayArrayArrayArrayArrayArray

Chodzi mi o to aby w podanym tekście znalazł adresy domen w postaci https://www.adres.pl lub https://www.adres-cos.pl/

Co najdziwniejsze nawet jak podam adres domeny której niema to też mi wywala 7x array

Skrypt ma działać na takiej zasadzie ktoś dodaje tekst z linkami w treści, a skrypt wyłapuje przy pomocy php adresy www z tekstu.

Wiem że w frameworku kohana php jest validacja adresu www, ale chcę przy tym skrypcie obejść się bez frameworka.

Odnośnik do komentarza
Udostępnij na innych stronach

Dałem ten Twój kod, mam tak:

preg_match_all('?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]', $site, $wynik);

I wywala mi:

Warning: preg_match_all() [function.preg-match-all]: Unknown modifier ':' in

A jak wyciągnąć go z tagu a

I czemu cały czas mi wywala array? I to po kilka razy, nawet jak na stroni jest jeden link?

Odnośnik do komentarza
Udostępnij na innych stronach

W kodzie meli brakuje wyeskejpowania znaków specjalnych, w kodzie kilasa88 brakuje "?:" w nawiasach - żeby nie zwracało części adresu do $wynik i ogólnie brakuje możliwych znaków które występują w adresach.

preg_match zwraca do tablicy $wynik podciągi z nawiasów i cały ciąg do $wynik[0].

Zainteresuj się tym https://pl2.php.net/parse_url a co do regexpów to poszukaj tematu 'klasa do sprawdzania pozycji' w tym dziale - tam chyba używałem regexpa do parsowania urli.

e:

$url='https://www.forum.optymalizacja.com/index.php?showtopic=72248';
preg_match('/^(?:(?:https?)|(?:ftp)):\/\/(?:[a-z0-9-]*\.)+[a-z]{2,6}.*$/i',$url,$wynik);
echo $wynik[0];

.* na końcu powinna być zastąpiona konkretnymi znakami z dokumentacji

BTW: https://www.osix.net/modules/article/?id=586

YUCK!! I hate RegEx... looks like you sat on the keyboard ;o).

:D:P:D

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

No i teraz ładnie pięknie działa, tylko jak zrobić aby nie wyświetlał adresów do obrazków typu:

https://log3.countomat.com/_log/link-bait.pl;~noparameter/ct.gif

Domyślam się, że najlepiej przefiltrować otrzymane wyniki pod kątem stringu gif, png, jpg etc... i wyniki w których znajdzie któryś z nich wywalić.

Najważniejsze że działa :(

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności