utf 8 - Replace Special Characters function issue -


i using function found on stackoverflow replace special characters:

function toascii( $str ) {     return strtr(utf8_decode($str),          utf8_decode(         'ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝŐŰßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿőű'),         'sozsozyyuaaaaaaaceeeeiiiidnoooooouuuuyousaaaaaaaceeeeiiiionoooooouuuuyyou'); } 

however, when try functionality in html not desired result. html code:

<?php  $test = 'ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝŐŰßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿőű';  $test1 = toascii($test); ?>  !doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en-us">     <head>         <meta http-equiv="content-type" content="text/html; charset=utf-8" />    </head>    <body>         <?php echo $test."<br>";               echo $test1;         ?>       </body> </html> 

result in browser:

ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝŐŰßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿőű uuuuuuuyuaaaaaaaceeeeiiiidnoooooouuuuyuusaaaaaaaceeeeiiiionoooooouuuuyyuu 

any ideas why characters shown u instead of desired one?

note: prefer avoid using setlocale since required additional changes in code.

when use strtr() 3 arguments, operates bytes , not multibyte characters (see http://php.net/manual/en/function.strtr.php#111270). instead have give array contains exact mapping.

this solution case:

<?php   function mbstringtoarray( $str ) {     return preg_split('//u', $str, -1, preg_split_no_empty); }  function toascii( $str ) {     $map = array_combine(         mbstringtoarray('ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝŐŰßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿőű'),         mbstringtoarray('sozsozyyuaaaaaaaceeeeiiiidnoooooouuuuyousaaaaaaaceeeeiiiionoooooouuuuyyou')     );     return strtr($str,$map); }  $test = 'ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝŐŰßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿőű'; $test1 = toascii($test);  ?>  <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en"     "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en-us">     <head>         <meta http-equiv="content-type" content="text/html; charset=utf-8" />     </head>     <body>     <?php         echo $test."<br>";         echo $test1;     ?>     </body> </html> 

output:

ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝŐŰßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿőű sozsozyyuaaaaaaaceeeeiiiidnoooooouuuuyousaaaaaaaceeeeiiiionoooooouuuuyyou  

Comments

Popular posts from this blog

ruby - Trying to change last to "x"s to 23 -

jquery - Clone last and append item to closest class -

c - Unrecognised emulation mode: elf_i386 on MinGW32 -