Foros del Web » Programando para Internet » PHP »

Expresion regular condicional

Estas en el tema de Expresion regular condicional en el foro de PHP en Foros del Web. Hola, estoy utilizando una función para reemplazar links por el famoso bbcode url . Ejem: http://www.google.com reemplaza por [url=http://www.google.com]http://www.google.com[/url] Código PHP: function  urlParseBB ( $s ...
  #1 (permalink)  
Antiguo 14/04/2010, 18:01
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 3 meses
Puntos: 56
Expresion regular condicional

Hola, estoy utilizando una función para reemplazar links por el famoso bbcode url.

Ejem: http://www.google.com reemplaza por [url=http://www.google.com]http://www.google.com[/url]


Código PHP:
function urlParseBB($s){ // function callback
    
return "[url=$s[1]]" $s[1] ."[/url]";
}
function 
linksToBBcode($s){
    return 
preg_replace_callback('/(http:\/\/[\w\/*\?*\&*\=*\.*]+)/i','urlParseBB',$s);

Ejemplo:

Código PHP:
$text '
Link normal: http://www.google.com
Link ya parseado: [url=http://www.forosdelweb.com]http://www.forosdelweb.com[/url]
'
;

echo 
linksToBBcode($text); 
Con las funciones todo bien, pero la expresión (http:\/\/[\w\/*\?*\&*\=*\.*]+)/i es la que uso ahora y no es la adecuada, me gustaría que ignorara los links que ya estén parseados como lo esta "forosdelweb.com", prácticamente me interesa saber que hace falta en la expresión para que no parsee los links que ya tienen el tag [url].

Un saludo y Gracias .
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #2 (permalink)  
Antiguo 14/04/2010, 18:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Expresion regular condicional

pues usar una condición precisamente, con el patrón de "mirar" hacía atrás..

te sugiero leer los siguiente:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/04/2010, 12:18
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 3 meses
Puntos: 56
Respuesta: Expresion regular condicional

Pero que de guía!, gracias me ha recontra servido, la expresión queda:

Código PHP:
preg_replace('/(?<!(?:\]|=))(http:\/\/[\w\/*\?*\&*\=*\.*]+)(?!(?:\[|\]))/i','[url=$1]$1[/url]',$s); 
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */

Etiquetas: condicional, expresion, regular
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:01.