Hola amigos, tengo creado un script sencillo para realizar búsquedas que tiene la opción de resaltar en negrita las palabras que se ingresaron en el formulario, el script es este:
Código PHP:
<?php
include('bdconex.php');
function resaltar($palabras, $texto) {
$cambia = array();
for($i=0; $i < count($palabras); $i++) {
$cambia = "<strong>".$palabras[$i]."</strong>";
}
return str_replace($palabras, $cambia, $texto);
}
if (isset($_POST["buscar"])) {
if($_POST['palabra'] == '') {
echo "No has ingresado ninguna palabra a buscar <a href='javascript:history.back()'>Regresar</a>";
}else {
$tabla = "noticias";
$campo = "titulo";
$palabra = stripslashes($_POST['palabra']);
$palabra = strip_tags($palabra);
$query = mysql_query("SELECT * FROM $tabla WHERE $campo LIKE '%".$palabra."%'");
$mostrar = mysql_num_rows($query);
if(mysql_num_rows($query) == "0") {
echo "No hay coincidencias encontradas para <strong>".$palabra."</strong> <a href='javascript:history.back()'>Regresar</a>";
}else {
?>
Se han encontrado <strong><?=$mostrar?></strong> coincidencias para <strong><?=$palabra?></strong>
<?php
while($datos = mysql_fetch_array($query)) {
$texto = $datos["titulo"];
$pal = array($palabra);
?>
<ul>
<li><?=resaltar($pal, $texto)?></li>
</ul>
<?php
}
}
}
}else {
?>
<form action="buscar.php" method="post">
<input name="palabra" type="text" />
<input name="buscar" type="submit" value="Enviar" />
</form>
<?php
}
?>
Las búsquedas funcionan correctamente, salvo una cosa, que sólo resalta las palabras que coincidan exactamente con la que se envió en el formulario, por ejemplo si yo ingreso
youtube al mostrarme los resultados de la búsqueda únicamente aparecen en negrita las palabras que estén escritas igual que como se envió en el formulario y si en los resultados está
YouTube pues no la resalta, alguno de ustedes sabrá como solucionar ese detalle?, gracias de antemano.
Saludos