Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/04/2012, 08:00
Mutis99
 
Fecha de Ingreso: abril-2010
Mensajes: 12
Antigüedad: 14 años
Puntos: 0
preg_replace_callback para reemplazar expresiones en una cadena de texto

Tengo el siguiente código para reemplazar expresiones por sus sinónimos en una cadena:

Código:
  $sinonimos=array('sin embargo' => array('no obstante', 'pero', 'de todas formas','de cualquier manera','en algún modo','como todo el mundo sabe'));
 
   $a='te lo digo sin embargo yo estoy aquí sin embargo yo te lo digo veces sin embargo mas je je je'; 
	   
  $cambiar='sin embargo';

       
    $b=preg_replace_callback("/$cambiar/i", create_function('$m', 'global $sinonimos; $p=strtolower(trim($m[0])); return array_key_exists($p, $sinonimos)?(is_array($sinonimos[$p])?X.$sinonimos[$p][mt_rand(0, count($sinonimos[$p])-1)].X:$sinonimos[$p]):$p;'), $a);
     

	  print $b;
El problema se me plantea principalmente por dos razones;

1.En primer lugar mi array $sinonimos no es bidimensional, es del tipo


Cita:
$sinonimos=array('sin embargo','no obstante', 'pero', 'de todas formas','de cualquier manera','en algún modo','como todo el mundo sabe');
2.En segundo lugar me gustaría que los reemplazos tuvieran el siguiente formato {palabra buscada} [palabra sinónimo] en negrita también y delimitadas por llaves y corchetes, es decir que colocara ambas palabras juntas, sinónimo y original separadas por un espacio y si fuera posible en negrita.

Y por más que hago cambios e intentos no acierto a hacer el adecuado para que ambas cosas funcionen

¿podríais ayudarme? gracias de antemano