Foros del Web » Programando para Internet » PHP »

Reemplazar palabras con preg_replace

Estas en el tema de Reemplazar palabras con preg_replace en el foro de PHP en Foros del Web. Hola gente del foro, después de tanto tiempo he vuelto con preguntas, estoy queriendo hacer mi propio phpBBcode, y leyendo encontré como se hace, la ...
  #1 (permalink)  
Antiguo 20/08/2009, 16:00
Avatar de totote  
Fecha de Ingreso: diciembre-2006
Mensajes: 61
Antigüedad: 17 años, 4 meses
Puntos: 0
Pregunta Reemplazar palabras con preg_replace

Hola gente del foro, después de tanto tiempo he vuelto con preguntas, estoy queriendo hacer mi propio phpBBcode, y leyendo encontré como se hace, la mayor parte se utiliza str_replace o preg_replace y venía bien hasta que se me ocurrio identificar etiquetas anidadas, no se si me entienden pero les pongo un ejemplo gráfico.
Como han visto la mayoría que ha hecho un posto o respondió un tema sabe como se utiliza las etiquetas [ code ] y en algunos foros tienen las etiquetas persinalizadas como ser en este caso la etiqueta [ php ] y a su vez cuando hay una dentro de una etiqueta [ php ] si hay una palabra reservada ésta se pone de otro color o en negrita, etc. mi idea es poder hacer lo mismo, detectar esas palabras reservadas y ponerlas de otro color, pero el problema es que que no puedo detectarlas.
En mi ejemplo estoy conviriendo las palabras "reservadas" a mayúsculas, pero hay casos en que no las detecta, el código que estoy utilizando es este:

Código PHP:
<?
$texto 
'codigo a var b var .codigo';
 
$codigoReservada[0] = '/codigo var .codigo/';
$codigoReservadaR[0] = 'codigo VAR .codigo';
$codigoReservada[1] = '/codigo(.+?) var .codigo/';
$codigoReservadaR[1] = 'codigo$1 VAR .codigo';
$codigoReservada[2] = '/codigo(.+?) var (.+?).codigo/';
$codigoReservadaR[2] = 'codigo$1 VAR $2.codigo';
$codigoReservada[3] = '/codigo var (.+?).codigo/';
$codigoReservadaR[3] = 'codigo VAR $1.codigo';
 
$texto preg_replace($codigoReservada,$codigoReservadaR,$texto);
 
echo 
$texto;
?>
cuando $texto tiene estos valores funciona
$texto = 'codigo a var .codigo';
$texto = 'codigo a var b .codigo';
$texto = 'codigo a var b var .codigo';

pero cuando $texto tiene este valor ya no funciona
$texto = 'codigo a var b var c .codigo';

Saludos y espero que puedan ayudarme
  #2 (permalink)  
Antiguo 20/08/2009, 17:20
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Reemplazar palabras con preg_replace

¿Ya dominas bastante bien las expresiones regulares?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 21/08/2009, 05:11
Avatar de totote  
Fecha de Ingreso: diciembre-2006
Mensajes: 61
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Reemplazar palabras con preg_replace

mmmm...... no
  #4 (permalink)  
Antiguo 21/08/2009, 05:43
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: Reemplazar palabras con preg_replace

abi tiene razón amigo, necesitas usar expresiones regulares para validar la cadena, de esta forma comprobarás si se repite o no la palabra var por asi decirlo. Saludos
__________________
Hospedaje Web al mejor costo!
  #5 (permalink)  
Antiguo 21/08/2009, 06:05
Avatar de totote  
Fecha de Ingreso: diciembre-2006
Mensajes: 61
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Reemplazar palabras con preg_replace

bueno tendré que leer sobre eso, mientras tanto estoy utilizando este código que a duras penas voy armando

Código PHP:
  $codigoCaracteres " \+\-\*\/\<\>\;\[\]\(\)\.";
  
$codigoReservada[0] = "/\[codigo\](.*)([$codigoCaracteres]+)var([$codigoCaracteres]+)(.*)\[\/codigo\]/";
  
$codigoReservada[1] = "/\[codigo\](.*) var\[\/codigo\]/";
  
$codigoReservada[2] = "/\[codigo\]var (.*)\[\/codigo\]/";
  
$codigoReservada[3] = "/\[codigo\]var\[\/codigo\]/";
  
$codigoReservadaR[0] = "[codigo]$1$2var$3$4[/codigo]";
  
$codigoReservadaR[1] = "[codigo]$1 var$[/codigo]";
  
$codigoReservadaR[2] = "[codigo]var $1[/codigo]";
  
$codigoReservadaR[3] = "[codigo]var[/codigo]";

  
$count 1;
  while(
$count != 0)
    
$texto preg_replace($codigoReservada,$codigoReservadaR,$texto,-1,$count); 
Saludos

Última edición por totote; 21/08/2009 a las 06:12
  #6 (permalink)  
Antiguo 21/08/2009, 07:27
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Reemplazar palabras con preg_replace

Te sugiero que vayas estudiando esto para que puedas hacerlo como tu quieres. http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
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 12:02.