2010-01-08 6 views
5

Comment puis-je obtenir la regex mentionné in this article fonctionnant avec preg_match en php?Url Correspondant à l'aide de l'expression rationnelle de Gruber en PHP

<?php 
preg_match("\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))/i", $text, $matches); 
print_r($matches); 
?> 

En utilisant le code ci-dessus, je reçois l'erreur suivante:

Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash... 
+0

Notez que cette expression régulière autorisera les URL comme 'http: // ./'et' http: // ??/'. Si ce n'est pas un problème pour vous, vous devriez vraiment utiliser 'filter_var ('http://www.google.com/', FILTER_VALIDATE_URL)' à la place, puisqu'il s'agit d'une fonction PHP intégrée. –

Répondre

7

Essayez ceci:

preg_match("#\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))#i", $text, $matches); 

Vous étiez absent délimiteurs regex (généralement /, mais en utilisant # ici parce qu'il est plus pratique pour les URLs)

+0

A travaillé parfaitement. Un grand merci. :) – navitronic

Questions connexes