Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/08/2009, 05:19
Oli_ar
 
Fecha de Ingreso: enero-2009
Mensajes: 19
Antigüedad: 16 años, 1 mes
Puntos: 0
Problema con la funcion preg_replace_callback

Hola,

Estoy tratando de realizar un glosario de terminos utilizando php y mysql.

Entonces, tengo textos en los cuales quiero que se reemplace automaticamente las palabras que pertenecen al glosario con un enlace.

Al principio, utilizaba la funcion str_replace pero el problema era cuando la palabra estaba por ejemplo al singular en el glosario y si estaba al plural el los textos. O tambien si pasaria el caso de tener una palabra como mente en el glosario y estupendamente en el texto.

Entonces, investigue y descubrí la funcion preg_replace_callback. Todo lo que pretendia funcionaba(palabras al plural) pero ahora me encuentro con un problema si las palabras estan acentuadas.

La utilizo de la siguiente manera:

Código:
function remplace($matches){
	$enlace = '<a href="glosario.php" title="Leer la definición">'.$matches[0].'</a>';
	return $enlace;
}
$cadena_inicial="Ca&iacute; del tejado";
$termino="Ca&iacute;";
$cadena_inicial = preg_replace_callback('/\b'.$termino.'+(?:|s|es)\b/i','remplace', $cadena_inicial);
echo $cadena_inicial;
Si cambio la variable &termino por tejado, funciona perfectamente.
Tambien es curioso porque si tenemos:
$cadena_inicial="Ca&iacute;a del tejado";
$termino="Ca&iacute;a";

Entonces, ahi funciona perfectamente.

He mirado el tema de la expresion regular '/\b' y \b/i' pero la verdad es que no lo entiendo mucho. Agradeceria si alguien pudiese ayudarme a resolver el problema y tambien darme algun link interesante para documentarme sobre las expresiones regulares.

Gracias.

Saludos