Foros del Web » Programando para Internet » PHP »

expresión regular para convertir link en [url]

Estas en el tema de expresión regular para convertir link en [url] en el foro de PHP en Foros del Web. Hola buenas, me gustaría saber una expersión regular que permita convertir un link tipo: <a href="direccion" target="target" class="class">link</a> en uno adecuado a un foro como ...
  #1 (permalink)  
Antiguo 09/12/2008, 17:38
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
expresión regular para convertir link en [url]

Hola buenas, me gustaría saber una expersión regular que permita convertir un link tipo:
<a href="direccion" target="target" class="class">link</a>

en uno adecuado a un foro como

[url=direccion]link["cierreurl"]


Las únicas variaciones del link son la dirección, target y class, y que en algún link pueda no aparecer el target="target" o el class="class".
Y no me importan que sean varias expresiones regulares para cada caso.

Por si sirve de ejemplo, esto es lo que uso actuamente que no hace exactamente eso que quiero:

Código:
$message = preg_replace('/<a href=("|&quot;)(http|https|ftp):\/\/(.*?)("|&quot;) target=("|&quot;)_blank("|&quot;)>(.*?)<\/a>/i','\\7',$message);
$message = preg_replace('/<a href=("|&quot;)(http|https|ftp):\/\/(.*?)("|&quot;)>(.*?)<\/a>/i','\\5',$message);
$message = preg_replace('/<a target=("|&quot;)_blank("|&quot;) href=("|&quot;)(.*?)("|&quot;)>(.*?)<\/a>/i','\\6',$message);
$message = preg_replace('/<a href=("|&quot;)(.*?)("|&quot;)>(.*?)<\/a>/i','\\4',$message);
$message = preg_replace('/<A href=("|&quot;)(http|https|ftp):\/\/(.*?)("|&quot;) target=("|&quot;)_blank("|&quot;)>(.*?)<\/a>/i','\\7',$message);
$message = preg_replace('/<A href=("|&quot;)(http|https|ftp):\/\/(.*?)("|&quot;)>(.*?)<\/a>/i','\\5',$message);
$message = preg_replace('/<A target=("|&quot;)_blank("|&quot;) href=("|&quot;)(.*?)("|&quot;)>(.*?)<\/a>/i','\\6',$message);
$message = preg_replace('/<A href=("|&quot;)(.*?)("|&quot;)>(.*?)<\/a>/i','\\4',$message);
Graciass!

Última edición por apañero; 09/12/2008 a las 17:43
  #2 (permalink)  
Antiguo 09/12/2008, 18:12
Avatar de david_f  
Fecha de Ingreso: mayo-2007
Ubicación: Santiago De Los Caballeros, Santiago, Dominican Republic, Dominican Republic
Mensajes: 52
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: expresión regular para convertir link en [url]

Código PHP:
# Original PHP code by Chirp Internet: www.chirp.com.au
# Please acknowledge use of this code by including this header.

$url "http://www.example.net/somepage.html";
$input = @file_get_contents($url) or die('Could not access file: $url');
$regexp "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
if(
preg_match_all("/$regexp/siU"$input$matches)) {
    
# $matches[2] = array of link addresses
    # $matches[3] = array of link text - including HTML code

  #3 (permalink)  
Antiguo 09/12/2008, 19:09
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
Respuesta: expresión regular para convertir link en [url]

Ok pero necesito aplicarlo sobre un texto en el que está dicho link, no en un link sólo, para que me devuelva todo el texto igual menos el link que habrá sido convertido a formato foro. ¿Cómo lo hago?
  #4 (permalink)  
Antiguo 09/12/2008, 19:25
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Respuesta: expresión regular para convertir link en [url]

Seguimos practicando Regexp, te sirve?

Código PHP:
<?php
$texto 
'
<a href="http://www.jourmoly.com.ar" target="target" class="class">Jourmoly</a><br/>
<a href="http://www.forosdelweb.com">Foros del web</a><br/>
<a target="target" class="class" href="http://www.maestrosdelweb.com">Maestros del web</a><br/>
<a href="http://www.php.net" target="target" class="class">PHP</a><br/>'
;

echo 
'<h1>Original:</h1> <p>' $texto '</p>';


echo 
'<h1>Modificado:</h1> <p>';
echo 
preg_replace('/\<a.*href="(.*)".*>(.*)<\/a>/U''[url=$1]$2[/url]'$texto);
echo 
'</p>';
?>

Saludos
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #5 (permalink)  
Antiguo 09/12/2008, 19:33
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
Respuesta: expresión regular para convertir link en [url]

Perfecto!
Muchas Gracias Federico por las prácticas XD
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 04:37.