Foros del Web » Programando para Internet » PHP »

Problema con preg_replace();

Estas en el tema de Problema con preg_replace(); en el foro de PHP en Foros del Web. Código PHP: <?php function  XBBCode ( $cadena ){     /* Funcion para convertir de      XBBCode a XHTML */    $cadena  =  htmlentities ( $cadena );    $cadena  =  str_replace ( '&quot;' , ...
  #1 (permalink)  
Antiguo 05/03/2009, 14:13
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Pregunta Problema con preg_replace();

Código PHP:
<?php
function XBBCode($cadena){ 
  
/* Funcion para convertir de
     XBBCode a XHTML */
  
$cadena htmlentities($cadena);
  
$cadena str_replace('&quot;','"',$cadena);
  
$cadena nl2br($cadena); 
  
$cadena stripslashes($cadena);
  
// Nombres de las etiquetas
  // que se deben cerrar
  
$etiquetas1 = array (
    
// La clave indica la etiqueta XBBCode
    //  el valor su traducción a XHTML
    
'n'=>'b',
    
'c'=>'i',
    
's'=>'u',
    
'url'=>'a'
  
);
  
// Nombres de las etiquetas
  // que no hace falta cerrar
  
$etiquetas2 = array (
    
'image'=>'img',
    
'hr'=>'hr'
  
);
  foreach (
$etiquetas1 as $etiqueta => $html)
    
$cadena=preg_replace("/[$etiqueta(.*?)](.*?)[/$etiqueta]/""<$html$1>$2</$html>"$cadena); 
  foreach (
$etiquetas2 as $etiqueta => $html)
    
$cadena=preg_replace("/[$etiqueta(.*?)/]/""<$html$1/>"$cadena); 
  return 
$cadena
}
?>
<?php
//include 'XBBCode.php'; 
$texto '[n][c]Hola![/c][/n] <[s]bienvenido[/s]> 
 a [url href="http://www.google.com"]http://www.google.com[/url]'

echo 
XBBCode($texto); 
?>
el error que me tira es:


Warning: preg_replace() [function.preg-replace]: Unknown modifier 'n' in C:\wamp\www\misitio\BBCode.php on line 26

Warning: preg_replace() [function.preg-replace]: Unknown modifier 'c' in C:\wamp\www\misitio\BBCode.php on line 26

Warning: preg_replace() [function.preg-replace]: Unknown modifier ']' in C:\wamp\www\misitio\BBCode.php on line 26

Warning: preg_replace() [function.preg-replace]: Unknown modifier 'r' in C:\wamp\www\misitio\BBCode.php on line 26

Warning: preg_replace() [function.preg-replace]: Unknown modifier ']' in C:\wamp\www\misitio\BBCode.php on line 28

Warning: preg_replace() [function.preg-replace]: Unknown modifier ']' in C:\wamp\www\misitio\BBCode.php on line 28
__________________
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)
  #2 (permalink)  
Antiguo 05/03/2009, 14:40
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años
Puntos: 11
Respuesta: Problema con preg_replace();

Hola

Debes escapar caracteres especiales de expresiones regulares. Por ej: / y [ ]

Código PHP:
foreach ($etiquetas1 as $etiqueta => $html){
    
$etiqueta preg_quote($etiqueta);
    
$cadena=preg_replace("/\[$etiqueta(([^\]]*)?)\](.*?)\[\/$etiqueta\]/""<$html$1>$3</$html>"$cadena);

  }
  foreach (
$etiquetas2 as $etiqueta => $html){
    
$etiqueta preg_quote($etiqueta);
    
$cadena=preg_replace("/\[$etiqueta(([^\]]*)?)\/\]/""<$html$1/>"$cadena); 
  } 
Saludos,
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 23:13.