expresiones regulares

Estado
No está abierto para más respuestas.
Mensajes
103
Puntuación de reacción
0
Extraer url con expresiones regulares

Hola amigos estoy tratando y tratando de hacer que este codigo funcione.

PHP:
function MakeUrls($str) 
{ 
$find=array('`((?:https?|ftp)://\S+[[:alnum:]]/?)`si','`((?<!//)(www\.\S+[[:alnum:]]/?))`si'); 

$replace=array('<a href="$1" target="_blank">$1</a>','<a href="http://$1" target="_blank">$1</a>'); 

return preg_replace($find,$replace,$str); 
}//Function testing 
$str=MakeUrls($str);

Que es lo que hace?

La variable $str con tiene la cadena de caracteres el cual tiene codigo html basico como los siguientes:

HTML:
<a href="#'></a> y <img src="#">

a funcion saca los enlaces y los convierte en hipervinculos automaticamente pero si tengo por ejemplo alguno de los codigos html ya mensionados los convierte en hipervinculo.

Que necesito?

que la funcion lo pase por alto y que solo busque enlaces sin estar envuelto en html.

un ejemplo de lo que pasa:

Untitled.png


3 Horas y no logre resolverlo. :huh:
 
Última edición:

lobogris

Platino
Usuario de Bronce
Mensajes
1,537
Puntuación de reacción
0
Esto puede valerte
PHP:
$re = "/(?<!<|\"|')((?:https?|ftp):\\/\\/[^'\">\\s\\.]+(?:\\.[a-z]{1,4}){1,2})(?!>|\"|')/";

Aunque es una expresión 'barata', además asegurate de escapar los datos si son introducidos por un usuario
 
Estado
No está abierto para más respuestas.
Arriba