[ayuda] agregar etiqueta a enlace

Tema en 'Programación & Programación Web' iniciado por cavoso, 25 Ene 2014.

  1. cavoso

    cavoso Usuario Casual nvl. 2
    17/41

    Registrado:
    31 May 2008
    Mensajes:
    2.792
    Me Gusta recibidos:
    14
    que tal
    mi consulta es la siguiente, he estado trabajando bastante en un proyecto (propio) y tengo el siguiente problema, actualmente guardo toda la informacion en una base de datos, y lo que quiero hacer es que cuando la informacion de valla a publicar si es un enlace le agrege automaticamente su etiqueta, me explico en la base de datos se guardaria algo asi "texto texto http://www.portalnet.cl/ texto texto" y quiero que el html me quede automaticamente como "texto texto <a href="http://www.portalnet.cl/">http://www.portalnet.cl/</a> texto texto" tal como pasa aca en el portal cuando se publica un enlace, yo he intentado reacrearlo pero no he tenido exito, si alguien sabe se le agradece
     
  2. dsignio

    dsignio Usuario Nuevo nvl. 1
    17/41

    Registrado:
    22 Ago 2012
    Mensajes:
    514
    Me Gusta recibidos:
    2
    Cortar la cadena por los espacios con explode en PHP antes de mostrar: explode(" ",$cadena);
    se supone que si la cadena contiene un vínculo este debería comenzar por http, https o www y no debiera tener espacios.

    ejemplo PHP:

    $cadena="texto texto http://www.portalnet.cl/ texto texto";
    $busqueda=explode(" ",$cadena);
    ....................................................................................
    resultado:
    $busqueda[0]=texto;
    $busqueda[1]=texto;
    $busqueda[2]=http://www.portalnet.cl/;
    $busqueda[3]=texto;
    $busqueda[4]=texto;
    ....................................................................................
    luego con la ayuda de foreach y un función puedes buscar la url
    ejemplo PHP:
    ....................................................................................
    function buscar($texto){
    $posibles=array('http','https','www');
    foreach($posibles as $etiqueta){
    if(strpos($texto, $etiqueta)){
    return true;//si encuentra el vinculo retorna true
    }
    }
    }
    $cadena_para_imprimir="";
    for($i=0;$i<=count($busqueda)-1;$i++){//recorre la cadena cortada
    if(buscar($busqueda[$i])){//consulta si es vínculo
    $cadena_para_imprimir.="<a href='$busqueda[$i]'>VISITA ESTE VINCULO!</a> ";//es un vínculo y lleva un espacio al final para que la cadena final no quede junta.
    }else{
    $cadena_para_imprimir.=$busqueda[$i]." ";//lleva un espacio al final y no es vínculo.
    }
    }
    echo $cadena_para_imprimir;//mostrar resultado.

    así creo que puede funcionar no he probado, ahí me comentas si funcionó. saludos.
     
  3. dsignio

    dsignio Usuario Nuevo nvl. 1
    17/41

    Registrado:
    22 Ago 2012
    Mensajes:
    514
    Me Gusta recibidos:
    2
    o de manera mas rápida sin tantas lineas:

    Ejemplo PHP.

    function buscar($text){
    //genera vínculo
    return preg_replace_callback(
    '#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#',
    create_function(
    '$matches',
    'return "<a href=\'{$matches[0]}\'>{$matches[0]}</a>";'
    ),
    $text
    );
    }
    $cadena="texto texto http://www.portalnet.cl/ texto texto";
    echo buscar($cadena);