Mas abajo les muestro un código que obtuve en esta pagina [URL="http://www.forosdelweb.com/f18/remarcar-palabras-busqueda-487357/"]http://www.forosdelweb.com/f18/remarcar-palabras-busqueda-487357/[/URL].
El problema en mi código es que muestra la leyenda " Se han encontrado coincidencias para" pero después de la palabra "encontrado" tendria que mostrar los datos de la base de datos (<strong><?=$mostrar?></strong>) y despues de "para" tendria que mostrar la palabra ingresada en el formulario (<strong><?=$palabra?></strong>).
Lo he revisado varias veces pero no descubro porque no funciona correctamente.
Código PHP:
<?php
require_once('Connections/MiSitio.php'); // Este archivo contiene los datos de conexión a la BD
// creamos una función que resaltará todas las palabras que coincidan con la búsqueda realizada
if(!function_exists('str_ireplace')) {
function str_ireplace($search,$replace,$subject) {
$search = preg_quote($search, "/");
return preg_replace("/".$search."/i", $replace, $subject); } }
function resaltar($palabra, $texto) {
$aux=$reemp=str_ireplace($palabra,'%s',$texto);
$veces=substr_count($reemp,'%s');
if($veces==0)return $texto;
$palabras_originales=array();
for($i=0;$i<$veces;$i++){
$palabras_originales[]='<strong>'.substr($texto,strpos($aux,'%s'),strlen($palabra)).'</strong>';
$aux=substr($aux,0,strpos($aux,'%s')).$palabra.substr($aux,strlen(substr($aux,0,strpos($aux,'%s')))+2);
}
return vsprintf($reemp,$palabras_originales);
}
// iniciamos el proceso de búsqueda
if (isset($_POST["buscar"])) {
if($_POST['palabra'] == '') {
echo "No has ingresado ninguna palabra a buscar <a href='javascript:history.back()'>Regresar</a>";
}else {
$tabla = "videos";
$campo = "titulo";
// quitamos cualquier código malicioso de $_POST['palabra']
$palabra = stripslashes($_POST['palabra']);
$palabra = strip_tags($palabra);
// hacemos la consulta a la base de datos según la palabra encontrada
$query = mysql_query("SELECT * FROM $tabla WHERE $campo LIKE '%".$palabra."%'");
$mostrar = mysql_num_rows($query); // obtenemos la cantidad de coincidencias encontradas
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)) {
$str = $datos["titulo"];
//$pal = array($palabra);
?>
<ul>
<li><?=resaltar($palabra, $str)?></li>
</ul>
<?php
}
}
}
}else {
?>
<form action="Untitled-1.php" method="post">
<input name="palabra" type="text" />
<input name="buscar" type="submit" value="Enviar" />
</form>
<?php
}
?>