Foros del Web » Programando para Internet » PHP »

Comportamientos diferentes con cadenas iguales en php

Estas en el tema de Comportamientos diferentes con cadenas iguales en php en el foro de PHP en Foros del Web. La extensión del campo "Título" no me deja ser más explícito. Mi problema es el siguiente. Tengo dos variables que contienen que guardan cadenas que ...
  #1 (permalink)  
Antiguo 08/09/2012, 19:08
Avatar de mariomonteverde1976  
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos Aires, Argentina
Mensajes: 1
Antigüedad: 11 años, 7 meses
Puntos: 0
Comportamientos diferentes con cadenas iguales en php

La extensión del campo "Título" no me deja ser más explícito.
Mi problema es el siguiente.
Tengo dos variables que contienen que guardan cadenas que contienen el mismo texto acentuado, por ejemplo: "González". La única diferencia entre ambas variables es que la variable_A toma su contenido de un recurso foráneo y la variable_B lo toma de otro recurso también foráneo o bien es ingresada a mano por el usuario.
El tema es que necesito pasar estas variables por una función que es la siguiente:
Código:
<?php
function specialchars_entities($variable)
{
	$salida = htmlspecialchars_decode(htmlentities($variable,ENT_NOQUOTES, 'UTF-8'), ENT_NOQUOTES); return $salida;
}
?>
Si el input es González, la salida deseada es Gonz&aacute;lez. Uds. se preguntarán que para qué necesito hacer esto. No importa para qué, el tema es que lo necesito. Bien... Hete aquí que la salida de la variable_B es la deseada, pero la de la variable_A es, ¡maldita sea!, "González" (sin las comillas, obvio). Esto lo noto, demás está decirlo, si miro el código fuente generado por php, sin embargo, al ver la salida de echo variable_A y echo variable_B en navegador es exactamente la misma: "González", sin signos raros, ni algo que indique que está mal la codificación de caracteres. Yo tengo todo seteado en utf8, tanto el código php como la bd de mysql. Todo funciona correctamente y se ve correctamente. El tema es con esta variable_A que trae su contenido de Library of Congress (USA) y una página que se llama OttoBib.
Espero haber sido claro y espero que lo que esté preguntando sea una verdadera estupidez de mi parte, así el problema se resuelve fácil. Pueden insultarme, pero por favor, necesito ayuda.
Muchas gracias.
  #2 (permalink)  
Antiguo 08/09/2012, 22:13
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: Comportamientos diferentes con cadenas iguales en php

Ser más explícito no implica extenderse en el título.

Te iba a decir muchas cosas, pero al ver ese pequeño pedazo de código, sólo un par de observaciones:

Qué esperas que haga htmlspecialchars_decode(htmlentities(/* parametros */))?

Te explico rápidamente:
1- htmlentities convierte caracteres especiales en sus respectivas entidades html, como puede ser & en &amp; < en &lt; etc.
2- htmlspecialchars_decode revierte la acción realizada por el paso anterior.

Entonces, si en la cadena A tienes González:
1- htmlentities devolverá Gonz&aacute;lez
2- htmlspecialchars_decode convertirá esto nuevamente a González

Si en la cadena B tienes Gonz&aacute;lez:
1- htmlentities devolverá Gonz&amp;aacute;lez
2- htmlspecialchars_decode nuevamente lo dejará como al principio: Gonz&aacute;lez

De esta forma, el comportamiento de tus cadenas es correcto, porque González (A) no es igual a Gonz&aacute;lez (B) y esto puedes comprobarlo si revisas el código fuente generado en tu navegador.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 09/09/2012, 08:27
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Comportamientos diferentes con cadenas iguales en php

Aparte del comentario que te dio Triby y creo que explica más que bien como solucionar el problema solo me gustaria hacer unas anotaciones (y hablo a modo personal):

Cita:
Uds. se preguntarán que para qué necesito hacer esto. No importa para qué, el tema es que lo necesito. Bien...

Cita:
Hete aquí que la salida de la variable_B es la deseada, pero la de la variable_A es, ¡maldita sea!, "González" (sin las comillas, obvio).
Cita:
Espero haber sido claro y espero que lo que esté preguntando sea una verdadera estupidez de mi parte, así el problema se resuelve fácil. Pueden insultarme, pero por favor, necesito ayuda.
Si has tenido un mal día en tu trabajo, o en tu casa o en donde sea y tienes problemas (como cualquier otro puede tenerlos) cuenta hasta 10 y relájate. Yo creo que uno en este foro la gran mayoría de las personas venimos con buena intención a ayudar y a que nos ayuden, pero al leer esto la primera vez sinceramente se me quitaron las ganas de seguir leyendo y colaborar.

La decencia no pelea con nadie, así que relajado que sin "mala onda" de tu parte es mas posible que la gente te llegue a colaborar.
__________________
Blog de humor http://elcuasatar.net63.net/

Etiquetas: codificacion
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 21:31.