替换已发布字符串的字母

时间:2015-03-19 21:12:19

标签: php string post str-replace turkish

在下面的代码中,我试图将“ğ,ş,ç”等土耳其语特殊字符替换为“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;
}  



 ?>

1 个答案:

答案 0 :(得分:0)

我认为这些字符是UTF-8。 PHP中的标准字符串函数不适用于超过1个字节的字符。

PHP.net上,有人建议使用此功能:

function mb_str_replace($needle, $replacement, $haystack) {
   return implode($replacement, mb_split($needle, $haystack));
}

使用它代替str_replace()应该可以正常工作