2017-10-20 4 views
-1

J'ai besoin de preg_match liens vers le service imgur.com. Donc, mon code est:Preg correspondant imgur.com liens

if (!preg_match("/(http|https)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3} 
(\/\$_POST['request'])) { ... } 

Comment faire fonctionner uniquement avec des liens comme ceux?

http://imgur.com/aBc1 
    https://imgur.com/a/aBc1 
http://www.imgur.com/a/aBc1 
    https://www.imgur.com/a/aBc1 
http://imgur.com/gallery/aBc1 
    https://imgur.com/gallery/aBc1 
http://i.imgur.com/aBc1.png(.jpg,.jpeg,.gif) 
    https://i.imgur.com/aBc1.png(.jpg,.jpeg,.gif) 
+0

capturer Est-ce que vous aimez groupes du tout? Signification, voulez-vous avoir accès à l'une des valeurs de l'URL? Ou avez-vous juste besoin de savoir que c'est ou non une URL imgur? –

+0

@PatrickQ, dernier. –

Répondre

1

Cela devrait faire:

/(http|https)\:\/\/[a-z]{0,4}[\.]*imgur+\.[a-zA-Z]{2,3}\/[a-zA-Z0-9]+(\/)*[a-zA-Z0-9]*[\.]*(jpg|png|jpeg|gif)*/g 
  • (http|https): vérification de http ou https dans l'URL
  • [a-z\.]{0,4}: vérification des www./i. etc.
  • (jpg|png|jpeg|gif)* pour détecter vos formats données (le cas échéant)

Démo en direct here

+0

Ne fonctionne pas, est "g" à la fin est nécessaire? –

+0

Ok, enlevé "g", fonctionne. –

1

Ce modèle correspondra à toutes les URL que vous avez fourni

/http(s)?\:\/\/(.*\.)?imgur.com\/.*/ 

Explication:

  • http Faites correspondre les caractères littéraux 'http'
  • (s)? En option correspondre au plus un 's'
  • \:\/\/ Faites correspondre les caractères littéraux ': //'
  • (.*\.)? En option correspondent à une quantité quelconque de caractères suivie d'une période/point
  • imgur.com\/ 'imgur.com/' Match
  • .* match un nombre quelconque de caractères supplémentaires

DEMO

+0

Merci beaucoup, mon pote –