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