Tengo el siguiente código para reemplazar expresiones por sus sinónimos en una cadena:
$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
$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 [b]{palabra buscada} [palabra sinónimo][/b] en negrita también y delimitadas por llaves y corchetes, es decir que [b]colocara ambas palabras[/b] juntas, sinónimo y original separadas por un espacio y si fuera posible [b]en negrita[/b].
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