Foros del Web » Programando para Internet » PHP »

¿Como buscar varias palabras dentro de un texto?

Estas en el tema de ¿Como buscar varias palabras dentro de un texto? en el foro de PHP en Foros del Web. Hola, estoy un poco liado con esto. Resulta que tengo un enorme array, digamos que de más de 10.000 elementos. Este contiene palabras. Ejemplo: "casa", ...
  #1 (permalink)  
Antiguo 03/03/2010, 11:26
 
Fecha de Ingreso: octubre-2005
Mensajes: 1
Antigüedad: 18 años, 6 meses
Puntos: 0
Pregunta ¿Como buscar varias palabras dentro de un texto?

Hola, estoy un poco liado con esto.

Resulta que tengo un enorme array, digamos que de más de 10.000 elementos. Este contiene palabras. Ejemplo: "casa", "avion", "las ventanas", etc..


Lo que necesito es buscar dentro de un texto, por estas palabras y marcarlas en negrita. "<b>avion</b>"

He probado varias formas con preg_replace o str_ireplace, pero cuando recorro la lista de palabras con un forech digamos que los anteriores comandos no me funcionan.. Además la lista de palabras la obtengo de una base de datos en formato UTF-8.

ej:
defino y cargo $VEC como un array enorme que contiene palabras:

$texto ="La casa está cerca del avion.";
$resultado =""
foreach($VEC as $palabra) {
$resultado = eregi_replace($palabra, '<b>'.$palabra.'</b>', $texto );
}

//también he probado con str_ireplace de forma similar

foreach($VEC as $palabra) {
$resultado = str_ireplace($palabra, '<b>'.$palabra.'</b>', $texto );
}
Esto no me ha funcionado, simplemente no me encuentra nada. No obstante si yo busco:
$palabra = "avion";
$resultado = eregi_replace($palabra, '<b>'.$palabra.'</b>', $texto );
esto si me funciona. Noto que al entrar en el bucle del FOR no me responde.


Por otro lado y dada la cantidad importante de palabras por las que tengo que preguntar, estaba pensando si no sería posible hacer algo como esto:
$resultado = eregi_replace o str_ireplace($VEC, '<b>'.$VEC[elemento].'</b>', $texto );
Ósea que yo le pase el array completo y me busque y me remplace los elementos sin tener que entrar dentro de un bucle FOR.

Alguna sugerencia de porqué esto no me funciona. Quizás tenga algo que ver con que la lista de palabras que esta en UTF-8, aunque he probado en pasarla a otra codificación y tampoco. ($VEC[elemento] = trim(mb_convert_case($palabra_desde_bd, MB_CASE_LOWER, "UTF-8"));)

Muchas gracias
  #2 (permalink)  
Antiguo 03/03/2010, 11:33
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: ¿Como buscar varias palabras dentro de un texto?

Lo primero que no uses los ereg, son obsoleto, para ello usa PCRE. Con los PCRE te debe resultar. O sea usando preg_replace. También te debería resultar usando str_ireplace.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: palabras
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:12.