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


str_replace doesn't work with array arguments on PHP

以下代码不适用于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));
} 

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

检查下面的代码。它工作正常。

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

$result = strtolower_rus('БНAKTARAZ BHATTA');

回声$result;