PHP: Comment faire pour vérifier si l'URL est de Youtube ou vimeo est
Comment puis-je écrire une fonction pour vérifier si les Url fournies est youtube ou vimeo?
Par exemple, j'ai deux adresses Url que je stocke dans une base de données sous forme de chaînes,
http://vimeo.com/24456787
http://www.youtube.com/watch?v=rj18UQjPpGA&feature=player_embedded
Si l'URL est youtube alors je vais réécrire l'URL,
http://www.youtube.com/embed/rj18UQjPpGA?rel=0&wmode=transparent
Si l'URL est vimeo, alors je vais réécrire cette URL,
http://vimeo.com/moogaloop.swf?clip_id=24456787
Grâce.
Comment recevez-vous en premier lieu, et de vérifier s'il est valide?
Je n'aime aucune des réponses postées ici, je préfère une méthode de requête ping à l'adresse url et de l'analyse de la réponse, je suppose que si il peut être fait de cette façon.
Je n'aime aucune des réponses postées ici, je préfère une méthode de requête ping à l'adresse url et de l'analyse de la réponse, je suppose que si il peut être fait de cette façon.
OriginalL'auteur laukok | 2011-07-08
Vous devez vous connecter pour publier un commentaire.
Comme d'autres l'ont noté dans les commentaires, c'est un moyen rapide et sale solution qui ne gère pas le cas de bord. Si l'url contient "youtube"(example.com/youtube) il sera de retour d'un faux positif. Le
parse_url()
solution mentionnés ci-dessous est un beaucoup plus robuste solution.Les expressions régulières fonctionnent bien pour ce genre de chose, mais souvent
strpos
ousubstr
sont plus rapides performance sage. Consultez la documentation PHP pourpreg_match()
. Ci-dessous les exemples il y a une note pour la même chose.Voici le prototype de code:
Évidemment de retourner une chaîne de caractères n'est pas la meilleure idée, mais vous obtenez le point. Le remplacer par votre propre logique d'entreprise.
ne strpos de travail pour tous les cas des personnages? c'est à dire "youtube = "YOUTUBE" ?
Cela ne devrait pas être accepté de répondre. Il ne parvient pas à renvoyer "inconnu" pour les Url qui contiennent "youtube" ou "vimeo" dans d'autres parties de l'URL. E. g. foo.com/youtube/123"
Il ne sera pas en mesure de détecter les url courtes
En cas de réponse incorrecte. Essayez de mettre l'url ci-dessous stackoverflow.com/questions/27969062/.... Cela permettra de trouver un lien youtube mais il n'est pas
OriginalL'auteur Icode4food
Utiliser le
parse_url
fonction pour séparer l'URL et puis il suffit de faire vos vérifications normalesVous donnera ce tableau
ce ne sera pas détecté youtu.être/oThQr4jjjjg liens
Il y a trois options:
www.youtube.com
,youtube.com
etyoutu.be
. Il suffit donc de vérifier avec ou||
OriginalL'auteur Stoosh
Surprenant, personne n'a mentionné que youtube url peut également contenir le nom de domaine " youtu."dans ce cas, toutes les solutions ci-dessus devra être adapté pour répondre à cette éventualité.
OriginalL'auteur Ronald De Ruiter
Récemment, j'ai écrit cette fonction pour faire exactement cela, j'espère que c'est utile à quelqu'un:
OriginalL'auteur AmpedWebDesign
Vous pouvez utiliser
preg_match()
:/
comme délimiteur quand votre patron est un fragment d'URL?La Force de l'habitude?
OriginalL'auteur AJ.
Depuis tout ce que vous voulez faire est de vérifier la présence d'une chaîne de caractères, utilisez stripos. Si elle n'a pas youtube.com ou vimeo.com en elle, l'url est incorrect, non? stripos est insensible à la casse, trop.
bien, maintenant, il ne poignée de youtu.être.
OriginalL'auteur Cole
Vous pouvez essayer ma solution:
Utilisation:
OriginalL'auteur Dung Vu
Utilisation les expressions régulières. Quelle langue utilisez-vous?
Edit: remarqué votre balise php. Il serait quelque chose comme ceci:
OriginalL'auteur theRealWorld