0

次のコードは PHP では機能しません。実際の結果: 'ЯЯЯ' -> 'ЯЯЯ' ('яяя' である必要があります) なぜですか?

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

更新しました:

ソースファイルには UTF エンコーディングを使用しています。ただし、apache が受け入れないため、CP-1251 エンコーディングは使用できません。解決策は何ですか?

更新しました:

また、次のコードを確認しました。

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

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

'я' の代わりに醜い文字を返します:(

4

1 に答える 1

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('БНAKTARAZ BHATTA');

$結果をエコーし​​ます。

于 2013-10-07T09:48:42.127 に答える