El código que uso es este:
Código PHP:
//Muchas cosas
$searches[2] = "/(^|[ \n])([a-zA-Z]+):\/\/([^ ,\"\n]+)/";
$replaces[2] = '\1<a href="\2://\3" target="_blank">\2://\3</a>';
$searches[3] = "/(^|[ \n])www\.([^ ,\"\n]+)/i";
$replaces[3] = '\1<a href="http://www.\2" target="_blank">[url]www.\2[/url]</a>';
// Más cosas, hasta hacer un preg_replace
Todo funciona bien. El problema está al detectar las url. Si la url acaba con un espacio, no hay problema, pero si acaba en otro caracter o caracteres, p. ej. un
) o
). o
), o
" (así una larga lista) entonces o no hace el link o lo hace mal, incluyendo esos caracteres en la url. Asimismo, si antes de http no pongo un espacio, p. ej.
(http..., tampoco me pilla el link.
¿Hay forma de detectarlas? En forosdelweb no pasa eso.