Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/05/2010, 11:50
lucasbanegas
 
Fecha de Ingreso: marzo-2010
Ubicación: Córdoba, Argentina
Mensajes: 21
Antigüedad: 14 años, 7 meses
Puntos: 0
Error: PHP utiliza un charset diferente para funciones

Tengo dos arrays para convertir caracteres especiales en entidades HTML:

Código PHP:
$specialChars    = array("¡","¢","£","¤","¥","¦","§","¨","©","ª","«","¬","*","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","×","÷","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","ø","ù","ú","û","ü","ý","þ","ÿ");

$htmlEntities    = array("¡","¢","£","¤","¥","¦","§","¨","©","ª","«","¬","*","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","×","÷","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","ø","ù","ú","û","ü","ý","þ","ÿ"); 
Al utilizar el siguiente script, el resultado es correcto:

Código PHP:
<?php
$test 
str_replace($specialChars$htmlEntities$test);
echo 
codificar($test);
?>
Resultado (correcto):

Código HTML:
Espa&ntilde;a,[6] tambi&eacute;n denominado Reino de Espa&ntilde;a, es una naci&oacute;n miembro de la Uni&oacute;n Europea, constituido en Estado social y democr&aacute;tico de Derecho y cuya forma de gobierno es la monarqu&iacute;a parlamentaria. Su territorio, con capital en Madrid, ocupa la mayor parte de la Pen&iacute;nsula Ib&eacute;rica, al que se a&ntilde;aden los archipi&eacute;lagos de las Islas Baleares (en el mar Mediterr&aacute;neo occidental) y de las Islas Canarias (en el oc&eacute;ano Atl&aacute;ntico nororiental), as&iacute; como en el norte del continente africano las plazas de soberan&iacute;a de las ciudades aut&oacute;nomas de Ceuta y Melilla, adem&aacute;s de los distritos y posesiones menores de las islas Chafarinas, el pe&ntilde;&oacute;n de V&eacute;lez de la Gomera y el pe&ntilde;&oacute;n de Alhucemas. El municipio de Ll&iacute;via, rodeado totalmente por territorio franc&eacute;s, en los Pirineos, completa el conjunto de territorios junto con la isla de Albor&aacute;n, las islas Columbretes y una serie de islas e islotes frente a sus propias costas. &copy; Copyright.
Pero si utilizo el mismo script (porque es exactamente el mismo) pero dentro de una función, el resultado es incorrecto:

Código PHP:
]<?php
function codificar($cadena) {
    
$cadena str_replace($specialChars$htmlEntities$cadena);
    return 
$cadena;
}
echo 
codificar($test);
?>
Resultado (incorrecto):

Código HTML:
España,[6] también denominado Reino de España, es una nación miembro de la Unión Europea, constituido en Estado social y democrático de Derecho y cuya forma de gobierno es la monarquÃ*a parlamentaria. Su territorio, con capital en Madrid, ocupa la mayor parte de la PenÃ*nsula Ibérica, al que se añaden los archipiélagos de las Islas Baleares (en el mar Mediterráneo occidental) y de las Islas Canarias (en el océano Atlántico nororiental), asÃ* como en el norte del continente africano las plazas de soberanÃ*a de las ciudades autónomas de Ceuta y Melilla, además de los distritos y posesiones menores de las islas Chafarinas, el peñón de Vélez de la Gomera y el peñón de Alhucemas. El municipio de LlÃ*via, rodeado totalmente por territorio francés, en los Pirineos, completa el conjunto de territorios junto con la isla de Alborán, las islas Columbretes y una serie de islas e islotes frente a sus propias costas. © Copyright.
¿Que puede estar sucediendo?
¿Algún genio sabe la solución?