Expression régulière : trouver des URL avec preg_match_all

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Expression régulière : trouver des URL avec preg_match_all

par webaida » 05 juin 2009, 09:17

Bonjour,

comment choisir un autre délimiteur ?

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Edit :

J'ai apparement réussi :
le pattern pour preg_match_all() :

Code : Tout sélectionner

$pattern = "/((http|https|ftp)\:\/\/)?[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?\/([a-zA-Z0-9\-\.\?_&%\$#\=~\/\'\,])*/";
Si vous voyez une amélioration possible ...

par mojorisin » 04 juin 2009, 18:45

Bonjour,
si vous utiliser le / comme délimiteur de regexp il vous faut alors les échapper.
Vu le nombre de slash dasn votre regexp utlisez d'autre délimiteur (le probleme que vous rencontrez vien je pense de la séquence /?)

Expression régulière : trouver des URL avec preg_match_all

par webaida » 04 juin 2009, 16:22

Bonjour,

j'aimerais utiliser preg_match_all sur un fichier texte chargé en chaine de caractères et trouver les URL contenues dans ce fichier.

Les URL ne sont pas forcément "standardisées" et peuvent aussi bien être

http://www.roberto.com
www.roberto.com
http://roberto.com
www.roberto.com/test.php?tutu=tata&toto=titi
etc.

J'ai trouvé un pattern que j'ai modifié qui me fait ça :

Code : Tout sélectionner

((http|https|ftp)\://)?[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*
Ca fonctionne avec ereg() ... mais pas avec preg_match_all() qui me donne le warning suivant :

Code : Tout sélectionner

Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '?'
Je ne m'y connais pas suffisement en Expressions régulières pour savoir dans quel sens aller ...
Une idée ?

Merci !