Código PHP:
<?php
/*Bueno, lo explicare desde aqui. Resulta que tengo aqui un capador de frases.
Si escribo una direccion que contiene [url]http://...[/url] todo va bien. Sin embargo, si escribo una direccion que empiece por [url]www...[/url] la direccion no se capa.
He comprobado el eregi_replace de www, y está bien, pero nada de nada.
A ver si me ayudais a encontrar la solucion que llevo mas de una semana con este script.
Muchas gracias.
El script lo copiais y lo pegais tal y como esta y os funcionara perfectamente.
*/
//¡Este es el mensaje base!
$mensaje = "\nDirección http: [url]http://www.ladireccionlarga.com/blablabla/index.php\nDirección[/url] www: [url]www.ladireccionlarga.com/blablabla/index.php[/url]";
#Variables retocadas
$mensaje = eregi_replace("\n"," <br /> ",$mensaje);
echo "<font color=\"red\">Frase sin capar: ".$mensaje."</font><br><br>"; //Mensaje sin capar
#Capar_frase
#Capa todo lo que pilla
function capar_frase($frase_entrada) {
function capar_palabra($palabra) {
$cortar=20; // cortar palabra de mas de .. caracteres
if (strlen($palabra)>$cortar) {
//Ahora capamos enlaces
if (strstr($palabra, "http:") OR strstr($palabra, "www")) {
//Cortamos el enlace cuidadosamente para no estropearlo
$palabro = substr($palabra, 0, $cortar);
$palabro .= "..";
$palabra = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '<a href="\\1" target="_blank">'.$palabro.'</a>', $palabra);
$palabra = eregi_replace('([[:space:]()[{}])([url]www.[/url][-a-zA-Z0-9@:%_\+.~#?&//=]+)', '\\1<a href="http://\\2" target="_blank">'.$palabro.'</a>', $palabra);
//Esto no son enlaces
} else {
$palabra = substr($palabra, 0, $cortar);
$palabra .= "..";
}
}
return $palabra; //Devuelve la palabra
}
$palabras =split(" ",$frase_entrada); //Definimos las palabras
foreach ($palabras as $palabra) { //Ahora lo llamamos palabra
$frase_salida .=capar_palabra($palabra)." "; //Añadimos los espacios para separar
}
return $frase_salida; //Devuelve la frase de salida
}
$mensaje = capar_frase($mensaje); //Capamos con la funcion
echo "<font color=\"green\">Frase capada: ".$mensaje."</font>"; //Escribimos mensaje
?>