如果我回显我的字符串
<?php echo $string; ?>
它返回
Vítor
但是我想用'i'代替'í'以创建一个干净的用户名。 我尝试使用以下功能
$unwanted_array = array( 'Š'=>'S', 'š'=>'s', 'Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E',
'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U',
'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c',
'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o',
'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y' );`
$novouser_uu = strtr($novouser_u, $unwanted_array);
但是它返回
v�tor
如果我使用utf8_encode,它将返回vãtor
,而utf8_decode将返回v?tor
用iconv替换只是删除了字符或留下了问号'?'
此页面的代码上没有html,因为它是通过AJAX访问的,但是在它来自的页面中,我将标头字符集设置为UTF-8。
另外,在config.php文件中,
mysqli_set_charset($ligacao, "utf8");
编辑:
在进行替换之前,以及在删除$novouser_u = strtolower($novouser);
之后,我都拥有strtolower
。
答案 0 :(得分:0)
您可以尝试将字节码用于要替换的内容。
<?php
$unwanted_array = array(
"\xc3\xad" => "i",
"\xc5\xa0" => "S",
);
$novouser_u = "Vítor";
$novouser_uu = strtr($novouser_u, $unwanted_array);
echo "$novouser_uu\n";
$novouser_u = "Šup";
$novouser_uu = strtr($novouser_u, $unwanted_array);
echo "$novouser_uu\n";
答案 1 :(得分:0)
您可以改用实际的transliterator:
$in = <<<'_E_'
'Š'=>'S', 'š'=>'s', 'Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E',
'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U',
'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c',
'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o',
'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y' );
_E_;
$tl = Transliterator::create('Latin-ASCII;');
echo $tl->transliterate($in);
输出:
'S'=>'S', 's'=>'s', 'Z'=>'Z', 'z'=>'z', 'A'=>'A', 'A'=>'A', 'A'=>'A', 'A'=>'A', 'A'=>'A', 'A'=>'A', 'AE'=>'A', 'C'=>'C', 'E'=>'E', 'E'=>'E',
'E'=>'E', 'E'=>'E', 'I'=>'I', 'I'=>'I', 'I'=>'I', 'I'=>'I', 'N'=>'N', 'O'=>'O', 'O'=>'O', 'O'=>'O', 'O'=>'O', 'O'=>'O', 'O'=>'O', 'U'=>'U',
'U'=>'U', 'U'=>'U', 'U'=>'U', 'Y'=>'Y', 'TH'=>'B', 'ss'=>'Ss', 'a'=>'a', 'a'=>'a', 'a'=>'a', 'a'=>'a', 'a'=>'a', 'a'=>'a', 'ae'=>'a', 'c'=>'c',
'e'=>'e', 'e'=>'e', 'e'=>'e', 'e'=>'e', 'i'=>'i', 'i'=>'i', 'i'=>'i', 'i'=>'i', 'd'=>'o', 'n'=>'n', 'o'=>'o', 'o'=>'o', 'o'=>'o', 'o'=>'o',
'o'=>'o', 'o'=>'o', 'u'=>'u', 'u'=>'u', 'u'=>'u', 'y'=>'y', 'th'=>'b', 'y'=>'y' );
有关音译规则的完整文档,请参见icu-project.org。