在下面的代码中,我试图将“ğ,ş,ç”等土耳其语特殊字符替换为“g,s,c”。当我尝试转换内部字符串时,它没问题。但是当我尝试转换一个发布的字符串时没有任何变化。这是代码:
<?php
$meslek0=$_POST['meslek'];
$internal='ş';
echo '<br>internal original: '.$internal;
echo '<br>posted original: '.$meslek0;
echo '<br>posted after decode: '.$meslek0;
$meslek0=replace_tr($meslek0);
$internal=replace_tr($internal);
echo '<br>internal converted:'.$internal;
echo '<br>posted converted:'.$meslek0;
function replace_tr($text) {
$text = trim($text);
$search = array('Ç','ç','Ğ','ğ','ı','İ','Ö','ö','Ş','ş','Ü','ü',' ');
$replace = array('c','c','g','g','i','i','o','o','s','s','u','u','-');
$new_text = str_replace($search,$replace,$text);
return $new_text;
}
?>
答案 0 :(得分:0)
我认为这些字符是UTF-8。 PHP中的标准字符串函数不适用于超过1个字节的字符。
在PHP.net上,有人建议使用此功能:
function mb_str_replace($needle, $replacement, $haystack) {
return implode($replacement, mb_split($needle, $haystack));
}
使用它代替str_replace()应该可以正常工作