Je veux utiliser PHP pour vérifier si la chaîne stockée dans la $myoutput
variable contient une syntaxe de lien valide ou s'il s'agit simplement d'un texte normal. La fonction ou la solution que je recherche doit reconnaître tous les formats de liens, y compris ceux avec des paramètres GET.
Une solution, suggérée sur de nombreux sites, pour interroger réellement la chaîne (en utilisant CURL ou la file_get_contents()
fonction) n'est pas possible dans mon cas et je voudrais l'éviter.
J'ai pensé aux expressions régulières ou à une autre solution.
Réponses:
Vous pouvez utiliser un validateur de filtre natif
Exemple:
la source
FILTER_VALIDATE_URL
cela ne validera pas le protocole d'une URL. Ainsissh://
,ftp://
etc. passera.Voici le meilleur tutoriel que j'ai trouvé là-bas:
http://www.w3schools.com/php/filter_validate_url.asp
Drapeaux possibles:
la source
!filter_var(...) === false
==>filter_var(...) === true
ou tout simplementfilter_var(...)
. :)ttps://www.youtube.com
comme valideL'utilisation de filter_var () échouera pour les URL avec des caractères non-ascii, par exemple ( http://pt.wikipedia.org/wiki/Guimarães ). La fonction suivante encode tous les caractères non-ascii (par exemple http://pt.wikipedia.org/wiki/Guimar%C3%A3es ) avant d'appeler filter_var ().
J'espère que cela aide quelqu'un.
la source
la source
Personnellement, j'aimerais utiliser l'expression régulière ici. Le code ci-dessous a parfaitement fonctionné pour moi.
la source
Compte tenu des problèmes avec filter_var () nécessitant http: //, j'utilise:
$is_url = filter_var($filename, FILTER_VALIDATE_URL) || array_key_exists('scheme', parse_url($filename));
la source
ttps://www.youtube.com
comme valideVous pouvez utiliser cette fonction, mais elle retournera false si le site Web est hors ligne.
la source
En fait ... filter_var ($ url, FILTER_VALIDATE_URL); ne fonctionne pas très bien. Lorsque vous tapez une vraie URL, cela fonctionne mais, il ne vérifie que http: // donc si vous tapez quelque chose comme " http: // weirtgcyaurbatc ", il dira toujours que c'est réel.
la source
ttps://www.youtube.com
comme valideUne autre façon de vérifier si l'URL donnée est valide est d'essayer d'y accéder, la fonction ci-dessous récupérera les en-têtes de l'URL donnée, cela garantira que l'URL est valide ET que le serveur Web est actif:
la source
Je suis tombé sur cet article de 2012. Il prend en compte les variables qui peuvent ou non être simplement des URL simples.
L'auteur de l'article, David Müeller , fournit cette fonction qui, selon lui, "... pourrait valoir la peine [sic]", ainsi que quelques exemples
filter_var
et ses lacunes.la source
si quelqu'un est intéressé à utiliser le cURL pour la validation. Vous pouvez utiliser le code suivant.
la source