Chcę użyć PHP, aby sprawdzić, czy ciąg przechowywany w $myoutput
zmiennej zawiera prawidłową składnię linku, czy jest to tylko zwykły tekst. Funkcja lub rozwiązanie, którego szukam, powinno rozpoznawać wszystkie formaty linków, w tym te z parametrami GET.
Rozwiązanie, sugerowane na wielu stronach, aby faktycznie zapytać o string (używając CURL lub file_get_contents()
funkcji) nie jest możliwe w moim przypadku i chciałbym tego uniknąć.
Myślałem o wyrażeniach regularnych lub innym rozwiązaniu.
Odpowiedzi:
Możesz użyć natywnego walidatora filtra
Przykład:
źródło
FILTER_VALIDATE_URL
nie spowoduje to sprawdzenia protokołu adresu URL. Więcssh://
,ftp://
itp minie.Oto najlepszy samouczek, jaki tam znalazłem:
http://www.w3schools.com/php/filter_validate_url.asp
Możliwe flagi:
źródło
!filter_var(...) === false
==>filter_var(...) === true
lub po prostufilter_var(...)
. :)ttps://www.youtube.com
Użycie filter_var () nie powiedzie się dla adresów URL ze znakami innymi niż ASCII, np. ( Http://pt.wikipedia.org/wiki/Guimarães ). Poniższa funkcja kodować wszystkie znaki spoza ASCII (np http://pt.wikipedia.org/wiki/Guimar%C3%A3es ) przed wywołaniem filter_var ().
Mam nadzieję, że to komuś pomoże.
źródło
źródło
Osobiście chciałbym tutaj użyć wyrażenia regularnego. Poniższy kod idealnie działał dla mnie.
źródło
Biorąc pod uwagę problemy z filter_var () wymagającą http: //, używam:
$is_url = filter_var($filename, FILTER_VALIDATE_URL) || array_key_exists('scheme', parse_url($filename));
źródło
ttps://www.youtube.com
Możesz użyć tej funkcji, ale zwróci ona wartość false, jeśli witryna jest offline.
źródło
Właściwie ... filter_var ($ url, FILTER_VALIDATE_URL); nie działa zbyt dobrze. Kiedy wpisujesz prawdziwy adres URL, działa, ale sprawdza tylko http: //, więc jeśli wpiszesz coś w rodzaju „ http: // weirtgcyaurbatc ”, nadal będzie mówić, że jest prawdziwy.
źródło
ttps://www.youtube.com
jako ważnyInnym sposobem sprawdzenia, czy podany adres URL jest prawidłowy, jest próba uzyskania do niego dostępu, poniższa funkcja pobierze nagłówki z podanego adresu URL, zapewni to poprawność adresu URL ORAZ serwer sieciowy:
źródło
Pojawił się w tym artykule od 2012 roku. Uwzględnia zmienne, które mogą, ale nie muszą być zwykłymi adresami URL.
Autor artykułu, David Müeller , zapewnia tę funkcję, o której mówi: „... może być warta [sic]”, wraz z kilkoma przykładami
filter_var
i jej wadami.źródło
jeśli ktoś jest zainteresowany używaniem cURL do walidacji. Możesz użyć następującego kodu.
źródło