Re: preg cambia la codificación de un string solo por parsearlo??

[email protected] (Carlos Medina)
Newsgroups php.general.es
Organization SimplyNetworks
Message-ID <[email protected]>
Am 23.08.2010 19:22, schrieb Arnold Roa:
> Bueno, me respondo a mi mismo. Tal vez no fui suficientemente explicito pero
> ejecutar ese codigo en un archivo utf-8 daba como resultado esto:
>
> Secretárias - Administração
> Secretaarias - Administraa�a�o
>
> Lo que no entendía es porque razón me DUPLICABA LA LETRA A!. y porque razon
> me cambiaba la codificación de caracteres del string.
>
> Lo probe tanto con PCRE como con POSIX y fallaba (casi) igual. Sin embargo
> leyendo un poco encontre que POSIX tiene el modificador \u que hace que las
> strings sean tratadas como UTF-8. De esta manera funciona adecuadamente, mi
> teoria es que POSIX tratan por defecto los strings como ANSI, y al ser un
> mapa de caracteres más corto, cuando ven internamente "á" lo ve como dos
> caracteres.
>
> Para que no falle de esa manera se pueden hacer dos cosas, primero usar el
> modificador \u de la siguiente manera:
>
>
> $s = "Secretárias - Administração ";
> echo preg_replace('/[á]/iu','a',$s);
>
> o bien pasar el string a ANSI, pasarla por POSIX y volverla a pasar a UTF:
>
> $s = "Secretárias - Administração ";
> $s = utf8_decode($s);
> $s = preg_replace('/[á]/i','a',$s);
> echo utf8_encode($s);
>
> El resultado es el mismo, bastante interesante! Yo no lo sabia :D
>
>
> Arnold
>
>
> 2010/8/23 Arnold Roa<[email protected]>
>
>> Saludos, tengo problemas con la versión de una web en portugues y una
>> funcion para poder crear urls sin acentos, estoy haciendo pruebas pero cada
>> vez me frustro más.
>>
>> Estoy probando con el siguiente codigo por ejemplo:
>>
>> $s = "Secretárias - Administração ";
>> echo $s;
>> echo "<br/>". preg_replace('/[á]/i','a',$s);
>>
>> El archivo esta en UTF-8 y el navegador lo interpresta como UTF-8. El
>> primer echo lo hago para asegurarme que se vean bien los acentos en el
>> navegador y luego el preg solamente busca una á con tilde, pero si se fijan
>> cambia los demas caracteres que no tienen nada que ver, como la c con cosita
>> y la a con cosita de la ñ. esto de verdad que me ha liado ya que no entiendo
>> porque me hace eso solo por el hecho de parsearlo.
>>
>> Arnold
>>
>
Hola

http://www.php.net/manual/es/ref.mbstring.php

Saludos

Carlos Medina
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.