str_replace不适用于PHP上的数组参数

时间:2013-10-07 06:51:01

标签: php utf-8 str-replace lowercase upcase

以下代码不适用于PHP。实际结果:'ЯЯЯ' - > 'ЯЯЯ'(应该是'яяя')为什么?

function strtolower_rus($string) { 
    $upper = array('А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я',' ');
     $lower = array('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я',' ');
    return strtolower(str_replace($upper, $lower, $string));
} 

更新:

我在源文件上使用UTF编码。但是不能使用CP-1251编码,因为apache不接受它。什么是解决方案?

更新:

我还检查了以下代码:

$lower = array('Я' => 'я');

function strtolower_rus($string) { 
    return strtolower(strtr($string, $lower));
} 

它返回一个丑陋的字符而不是'я':(

1 个答案:

答案 0 :(得分:0)

检查以下代码。它工作正常。

header('content-type:text / html; charset = utf-8'); function strtolower_rus($ string){     $ upper = array('А','Б','В','Г','Д','Å','Ё','Ж','З','И','Й',' К”, 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц' ,'Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я','');     $ lower = array('а','б','в','г','д',''','ё','ж','з','и','й',' к”, 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц' ,'ч','ø','ù','ú','ы','ь','э','ю','я','');     return str_replace($ upper,$ lower,$ string); }

$ result = strtolower_rus('БНAKTARAZBHATTA');

echo $ result;