Foros del Web » Programando para Internet » PHP »

Convertir texto a enlace

Estas en el tema de Convertir texto a enlace en el foro de PHP en Foros del Web. Abro este tema a pesar de existir otros temas iguales ya que contesté en uno de ellos que era del 2006/2007 pero algún moderador me ...
  #1 (permalink)  
Antiguo 19/05/2008, 10:04
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Convertir texto a enlace

Abro este tema a pesar de existir otros temas iguales ya que contesté en uno de ellos que era del 2006/2007 pero algún moderador me ha borrado el mensaje y ha cerrado el post, sin decirme por qué.

El tema era este:

http://www.forosdelweb.com/f18/conve...enlace-403935/

Pues bueno, abro tema nuevo.

Me gustaria saber como hacer que para la función php que transforma el texto en enlace, añadirle "class", "rel", y otros atributos del <a>.

Código PHP:
function make_links_blank($noticia)
{
return 
preg_replace(
array(
'/(?(?=<a[^>]*>.+<\/a>)
(?:<a[^>]*>.+<\/a>)
|
([^="\']?)((?:https?|ftp|bf2|):\/\/[^<> \n\r]+)
)/iex'
,
'/<a([^>]*)target="?[^"\']+"?/i',
'/<a([^>]+)>/i',
'/(^|\s)(www.[^<> \n\r]+)/iex',
'/(([_A-Za-z0-9-]+)(\\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-]+)
(\\.[A-Za-z0-9-]+)*)/iex'
),
array(
"stripslashes((strlen('\\2')>0?'\\1<a href=\"\\2\">\\2</a>\\3':'\\0'))",
'<a\\1',
'<a\\1 target="_blank">',
"stripslashes((strlen('\\2')>0?'\\1<a href=\"http://\\2\">\\2</a>\\3':'\\0'))",
"stripslashes((strlen('\\2')>0?'<a href=\"mailto:\\0\">\\0</a>':'\\0'))"
),
$noticia
);

¿Alguien podria decirme donde añadir estos atributos?

Gracias.
  #2 (permalink)  
Antiguo 19/05/2008, 11:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Convertir texto a enlace

http://php.net/preg_match

mmm..... digamos SI la cadena (el <a>) no tiene tal... atributo ENTONCES lo agregamos...

preg_match('/<a atributo\s*=\s*([\'\"])*(.+?)(\\1)?/i', $link)


luego reemplazar es mas facil....

$link = str_replace('<a', '<a atributo="xyz"', $link);
  #3 (permalink)  
Antiguo 19/05/2008, 12:04
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Respuesta: Convertir texto a enlace

Creo que no me entendiste,

lo que me gustaria a mi es que todos los enlaces que generase esa función, los generase con los atributos que yo le añada. Sin tener que añadir más código, desde la misma función.
  #4 (permalink)  
Antiguo 19/05/2008, 12:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Convertir texto a enlace

si kieres ke todos los enlaces generados tengan los mismos atributos: simple... modifica tus replaces....

si quieres que haga comparaciones buscando, y reemplazando personalizadamente... necesitas una funcion extra... lo siento, suerte!
  #5 (permalink)  
Antiguo 19/05/2008, 12:46
 
Fecha de Ingreso: enero-2008
Mensajes: 132
Antigüedad: 16 años, 2 meses
Puntos: 6
Respuesta: Convertir texto a enlace

Código PHP:

function links($x)
    {
    return 
preg_replace(
        array(
        
'/(?(?=<a[^>]*>.+<\/a>)
        (?:<a[^>]*>.+<\/a>)
        |
        ([^="\']?)((?:https?|ftp|bf2|):\/\/[^<> \n\r]+)
        )/iex'
,
        
'/<a([^>]*)target="?[^"\']+"?/i',
        
'/<a([^>]+)>/i',
        
'/(^|\s)(www.[^<> \n\r]+)/iex',
        
'/(([_A-Za-z0-9-]+)(\\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-]+)
        (\\.[A-Za-z0-9-]+)*)/iex'
        
),
        array(
        
"stripslashes((strlen('\\2')>0?'\\1<a href=\"\\2\">\\2</a>\\3':'\\0'))",
        
'<a\\1',
        
'<a\\1 target="_blank" rel="nofollow" class="link">',
        
"stripslashes((strlen('\\2')>0?'\\1<a href=\"http://\\2\"  target=\"_blank\" rel=\"nofollow\" class=\"link\">\\2</a>\\3':'\\0'))",
        
"stripslashes((strlen('\\2')>0?'<a href=\"mailto:\\0\">\\0</a>':'\\0'))"
            
),
    
$x
    
);
    } 
Suerte
  #6 (permalink)  
Antiguo 19/05/2008, 12:52
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: Convertir texto a enlace

Código PHP:
<?php 
   $texto  
=  str_replace "\r" ,  "" ,  $texto ); 

$texto  =  preg_replace "/(http:\/\/[^(\)|[:space:])]*)\)/" 
"<a href=\"\\1\" target=\"_blank\">\\1</a>)" 
$texto ); 

$texto  =  preg_replace "/(http:\/\/[^([:space:]|\"|\<)]*)[[:space:]]/" 
"<a href=\"\\1\" target=\"_blank\">\\1</a> " 
$texto ); 

$texto  =  preg_replace "/\<a href=\"(.*zonasiete.*)\" target=\"_blank\"\>/" 
"<a href=\"\\1\">" 
$texto ); 

?>
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #7 (permalink)  
Antiguo 19/05/2008, 13:00
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Respuesta: Convertir texto a enlace

Perfecto Surfiction, era eso lo que necesitaba.

Muchas gracias a todos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:59.