Foros del Web » Programando para Internet » PHP »

str_ireplace y caracter Ñ

Estas en el tema de str_ireplace y caracter Ñ en el foro de PHP en Foros del Web. Hola foreros! Estoy haciendo un buscador y pintado de resultados. El buscador busca correctamente... y los resultados se pintan también correctamente :) El problema esta, ...
  #1 (permalink)  
Antiguo 25/02/2016, 06:19
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 9 meses
Puntos: 8
str_ireplace y caracter Ñ

Hola foreros!
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>
Yo al ejecutar el codigo anterior me devuelve lo siguiente:

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", , ) 
pero me sucede lo mismo que con str_ireplace

Muchas gracias
__________________
Follow me on twitter @franbedia
  #2 (permalink)  
Antiguo 25/02/2016, 17:42
 
Fecha de Ingreso: julio-2008
Mensajes: 543
Antigüedad: 15 años, 9 meses
Puntos: 56
Respuesta: str_ireplace y caracter Ñ

yo creo que tu problema esta en la codificacion UTF8.... quiero decir, en UTF8 me suena que no existe la ñ, tendras que cambiarla por su entidad html ( & ntilde ; sin espacios ) antes del replace. Es mas, haz la prueba con alguna palabra con acento, te pasa lo mismo?

Cita:
Iniciado por fbedia Ver Mensaje
He usado esta porque es sensible a mayusculas y minusculas..
insensible, es insenible ;) si fuera sensible no te valdría para ambos indistintamente...
__________________
Un saludo! :-)
Quiero ser el primero
  #3 (permalink)  
Antiguo 25/02/2016, 19:37
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 2 meses
Puntos: 11
Respuesta: str_ireplace y caracter Ñ

Mira mi respuesta en este tema: [URL="http://http://www.forosdelweb.com/f18/eliminar-caracteres-especiales-php-1148007/"]http://http://www.forosdelweb.com/f18/eliminar-caracteres-especiales-php-1148007/[/URL]
  #4 (permalink)  
Antiguo 26/02/2016, 04:47
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: str_ireplace y caracter Ñ

Cita:
Iniciado por darchy Ver Mensaje
yo creo que tu problema esta en la codificacion UTF8.... quiero decir, en UTF8 me suena que no existe la ñ, tendras que cambiarla por su entidad html ( & ntilde ; sin espacios ) antes del replace.
Tengo que discrepar de esto porque, precisamente, UTF-8 es la codificación que soporta todos los caracteres del alfabeto español, ñ, con acentos, etc.
  #5 (permalink)  
Antiguo 26/02/2016, 07:06
 
Fecha de Ingreso: julio-2008
Mensajes: 543
Antigüedad: 15 años, 9 meses
Puntos: 56
Respuesta: str_ireplace y caracter Ñ

Cita:
Iniciado por rbczgz Ver Mensaje
Tengo que discrepar de esto porque, precisamente, UTF-8 es la codificación que soporta todos los caracteres del alfabeto español, ñ, con acentos, etc.
hum, tienes razon en que no afecta al tema, sigue cogiendo solo MONTAÑA y no montaña... aun asi, te aseguro que a mi con UTF8 me sale descojonado pero si lo cambio a ISO-8859-1 me sale bien escrito (pero el mismo resultado en lo que pregunta fbpedia). por eso pensaba que venia de ahi el problema
__________________
Un saludo! :-)
Quiero ser el primero
  #6 (permalink)  
Antiguo 26/02/2016, 07:11
 
Fecha de Ingreso: julio-2008
Mensajes: 543
Antigüedad: 15 años, 9 meses
Puntos: 56
Respuesta: str_ireplace y caracter Ñ

a mi asi:

Código PHP:
Ver original
  1. <html>
  2. <head>
  3.     <meta charset="UTF-8">
  4. </head>
  5. <body>
  6. <?php
  7.  
  8. $cadena_1 = "Hola forosdelweb! Probar&eacute; con MONTA&Ntilde;A";
  9.  
  10. $test_1 = "hola";
  11. $test_2 = "HOLA";
  12. $test_3 = "monta&ntilde;a";
  13. $test_4 = "MONTA&Ntilde;A";
  14. $test_5 = "MONTA";
  15. $test_6 = "monta";
  16.  
  17. echo str_ireplace($test_1,
  18. "<span style='background-color:#ff9900;'><b>".$test_1."</b></span>",
  19. $cadena_1)."<br/>";
  20.  
  21. echo str_ireplace($test_2,
  22. "<span style='background-color:#ff9900;'><b>".$test_2."</b></span>",
  23. $cadena_1)."<br/>";
  24.  
  25. echo str_ireplace($test_3,
  26. "<span style='background-color:#ff9900;'><b>".$test_3."</b></span>",
  27. $cadena_1)."<br/>";
  28.  
  29. echo str_ireplace($test_4,
  30. "<span style='background-color:#ff9900;'><b>".$test_4."</b></span>",
  31. $cadena_1)."<br/>";
  32.  
  33. echo str_ireplace($test_5,
  34. "<span style='background-color:#ff9900;'><b>".$test_5."</b></span>",
  35. $cadena_1)."<br/>";
  36.  
  37. echo str_ireplace($test_6,
  38. "<span style='background-color:#ff9900;'><b>".$test_6."</b></span>",
  39. $cadena_1)."<br/>";
  40.  
  41. ?>
  42. </body>
  43. </html>

si que me funciona (y con ISO-8859-1 tambien, igual resultado). sigo pensando que el problema esté con la codificacion, aunque no necesariamente con que sea utf o deje de serlo...
__________________
Un saludo! :-)
Quiero ser el primero
  #7 (permalink)  
Antiguo 26/02/2016, 12:43
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 2 meses
Puntos: 11
Respuesta: str_ireplace y caracter Ñ

Si te falla el utf8 te aseguro que tienes algo que no esta configurado con utf8, buscalo (Sistema operativo, apache, php, xml-rpc, soap,base de datos, conexiones a base de datos, mail, la API que estes usando, etc). Esto es si estas en linux, si estas en windows lo unico que te va a fallar es escribir archivos en disco y para ello se usa iconv. http://www.forosdelweb.com/f18/elimi...s-php-1148007/
  #8 (permalink)  
Antiguo 26/02/2016, 23:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: str_ireplace y caracter Ñ

Has probado usar palabras con tilde como éxito y Éxito?

Si también falla con eso, entonces usa la función set_locale() para establecer el idioma en español.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: html
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 09:09.