Foros del Web » Programando para Internet » PHP »

Problemas con preg_replace_callback()

Estas en el tema de Problemas con preg_replace_callback() en el foro de PHP en Foros del Web. Gente: he intentado aisalar las palabras de un string de forma de poder utilizar funciones de reemplazo sobre esas palabras. Casi lo logro con preg_replace_callback() ...
  #1 (permalink)  
Antiguo 12/07/2009, 11:32
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Exclamación Problemas con preg_replace_callback()

Gente: he intentado aisalar las palabras de un string de forma de poder utilizar funciones de reemplazo sobre esas palabras. Casi lo logro con preg_replace_callback()

Código parser:
Ver original
  1. <?
  2. Function reemplazo ($matches){
  3.   $word = $matches[1];
  4.   if ($word=='C') $word='se';
  5.   if ($word=='mente') $word='pensamiento';
  6.   return " /{$word}\ ";
  7. }
  8.  
  9.  
  10. $str="Italico hizo esto para ver como C puede aislar, facilmente,palabras (words) de un string. Ej: mente y no espontaneamente";
  11.  
  12. $str= preg_replace_callback("|[ \[.,;(]{0,}([\wáéíóúñÑ]+)[ \].,;)]{0,}|","reemplazo",$str); // aisla palabras delimitadas por espacios, entre (), [], etc.
  13. echo $str;
  14.  
  15. ?>
Notar de que se reemplaza sin problemas 'mente' por pensamiento sin tocar 'espontaneamente'

El problema ? pierdo todas las comas y caracteres delimitadores que he usado en la expresion regular

Esto iba a ser un aporte.........y termina siendo un pedido de axulio
__________________
Salu2!

Última edición por Italico76; 12/07/2009 a las 11:45
  #2 (permalink)  
Antiguo 12/07/2009, 12:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas con preg_replace_callback()

mira... $match[0] contiene TODA la expresión capturada....

y me imagino, que con eso te darías una idea...


o bien, captura también los caracteres adyacentes... e igualmente, los devuelves solo cambiando el $match[N]
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/07/2009, 14:28
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Problemas con preg_replace_callback()

gracias PATE - POR FIN!!!!!!!! lo he logrado con la pista que me has dado

Código PHP:
<?
Function reemplazo ($matches){
  
$delimitada $matches[0];
  
$word $matches[1];

  
// Ejemplo de algoritmo de reemplazo ////////
  
if ($word=='C'$wordAfer='se';
  if (
$word=='mente'$wordAfer='pensamiento';
  if (
$wordAfer==""$wordAfer $word;
  
$word str_replace ($word,$wordAfer,$delimitada);
  
////////////////////////////////////////////
  

  
  
return $word;
}



$str="Italico hizo esto para mostrar como C puede (verdaderamente) aislar, facilmente,palabras (words) de un string. Ej: mente y no espontaneamente";

$strpreg_replace_callback("|[ \[.,;(]{0,}([\wáéíóúñÑ]+)[ \].,;)]{0,}|is","reemplazo",$str); // aisla palabras delimitadas por espacios, entre (), [], etc.
echo $str;

?>
__________________
Salu2!

Última edición por Italico76; 12/07/2009 a las 14:54
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 15:58.