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