Tengo una base de datos con la tabla diccionario y la tabla noticias, pues lo que quiero hacer es que cuando muestre una noticia, compruebe si las palabras que muestra existen en el diccionario y si es así, lincar con ellas.
He hecho un código que lo que hace es separar el texto de la noticia en un array con explode(), luego crea otro array que contiene las palabras que hay en el diccionario (esto lo hago haciendo consultas a la base de datos, pero me gustaria crear un txt cada 12 horas que contubiese las palabras, para asi la comparacion hacerla con el TXT ... pero ese es otro tema que tengo en otro post ;)...)
Luego comparo los arrays palabra por palabra con un for anidado dentro de otro y si encuentro coincidencias cambio la palabra original por la misma pero con las etiquetas HTML para hacer el link.
Esto me a "relativamente" funcionado, pero me encuentro los siguietes errores:
- si una palabra acaba con punto o con coma, no la compara bien, ya que el explode lo hago usando los espacios y si tengo un texto tal como este:
"Hola, me llamo Dani" al crear el array la palabra Hola (que es la que deveria comparar) me la guarda como Hola,
Para solucionar esto he intentado crear una funcion que compruebe si la palabra acaba en letra o no y si no es asi puse le quita el ultimo caracter...
Código PHP:
function ultimo_caracter(&$aux2)
{
if (ereg( "([a-z]|[A-Z])", substr($cad,strlen($cad)-1)))
{
return FALSE;
}
else
{
return TRUE;
}
}
- El otro fallo que le veo es que no lo encuentro nada optimo, ya que si tengo un texto largo y muchas palabras en el diccionario me da la sensación de que ira lento.
Todo este rollo es simplemente para preguntar ¿que metodo se usa para hacer lo que busco? ¿estoy planteando bien el asunto? ¿como me cargo los puntos si los hay para comparar las palabras?
Espero no haber sido mu pesado, gracias!