Estoy haciendo un buscador y pintado de resultados.
El buscador busca correctamente... y los resultados se pintan también correctamente :)
El problema esta, en que al pintar los resultados quiero "resaltar" la cadena de busqueda... y para ello he usado la función str_ireplace.
He usado esta porque es sensible a mayusculas y minusculas.. y me funciona bien en todos los casos que he probado, salvo cuando hay por medio una letra eñe!
Les pongo un ejemplo para que lo testeen:
Código PHP:
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<?php
$cadena_1 = "Hola forosdelweb! Probaré con MONTAÑA";
$test_1 = "hola";
$test_2 = "HOLA";
$test_3 = "montaña";
$test_4 = "MONTAÑA";
$test_5 = "MONTA";
$test_6 = "monta";
echo str_ireplace($test_1,
"<span style='background-color:#ff9900;'><b>".$test_1."</b></span>",
$cadena_1)."<br/>";
echo str_ireplace($test_2,
"<span style='background-color:#ff9900;'><b>".$test_2."</b></span>",
$cadena_1)."<br/>";
echo str_ireplace($test_3,
"<span style='background-color:#ff9900;'><b>".$test_3."</b></span>",
$cadena_1)."<br/>";
echo str_ireplace($test_4,
"<span style='background-color:#ff9900;'><b>".$test_4."</b></span>",
$cadena_1)."<br/>";
echo str_ireplace($test_5,
"<span style='background-color:#ff9900;'><b>".$test_5."</b></span>",
$cadena_1)."<br/>";
echo str_ireplace($test_6,
"<span style='background-color:#ff9900;'><b>".$test_6."</b></span>",
$cadena_1)."<br/>";
?>
</body>
</html>
hola forosdelweb! Probaré con MONTAÑA
HOLA forosdelweb! Probaré con MONTAÑA
Hola forosdelweb! Probaré con MONTAÑA
Hola forosdelweb! Probaré con MONTAÑA
Hola forosdelweb! Probaré con MONTAÑA
Hola forosdelweb! Probaré con montaÑA
En el test_3, debería de resaltarme también la palabra "montaña".. ya que estoy buscando "montaña" y existe "MONTAÑA" en la cadena...
pero no lo hace :(
Si se fijan, con "hola" y "HOLA" lo hace correctamente...
La verdad que no se me ocurre que hacer...
¿Alguna solucion?
Acepto también cambios de la función str_ireplace.. u algún otro método o funcion que me sugieran.
Yo he probado tambien con
Código PHP:
preg_replace("/($pattern)/i", , )
Muchas gracias