2010-01-08 12 views
5

¿cómo obtengo la expresión regular que se menciona in this article que trabaja con preg_match en php?Coincidencia de URL con la expresión regular de Gruber en PHP

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

Usando el código anterior me sale el siguiente error:

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

Tenga en cuenta que esta expresión regular permitirá las URL como 'http: // ./'y' http: // ??/'. Si esto no es un problema para ti, realmente deberías usar 'filter_var ('http://www.google.com/', FILTER_VALIDATE_URL)', ya que es una función PHP incorporada. –

Respuesta

7

Prueba esto:

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

Usted estaba perdiendo los delimitadores de expresiones regulares (por lo general /, pero utilizando # aquí porque es más conveniente para las URL)

+0

Funcionó perfectamente. Muchas gracias. :) – navitronic

Cuestiones relacionadas