0

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



 ?>
4

1 回答 1

0

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

PHP.net上,有人提出了这个功能:

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

使用它而不是 str_replace() 应该可以工作

于 2015-03-19T21:50:50.957 回答