utf 8 — ошибка турецкого символа в функции mb_strtoupper переполнения стека

Мой вопрос — скорее объяснение для турецких колледжей, которые испытывают проблемы с нашими забавными персонажами.

Это наверняка PHP 5 имеет ошибка капитализируя и, следовательно, сопоставляя их.

echo mb_strtoupper («Турецкие столицы для ğ, i, ı, ş в верхнем регистре», «UTF-8»);

дает результат: «ТУРЕЦКИЙ КАПИТАЛ ДЛЯ Ğ, I, I, Ş ВЕРХНИЙ».

Но это неправильно. Правильный вывод должен быть «TURKİSH CAPİTALS FOR Ğ, İ, I, İ IN UPPERCASE»

Проблема в нашем языке у нас есть «я» в столицах «İ» и «ı» в столицах «I».

Я думаю, вы видите проблему.

Кому мы сообщим об этом ошибка в PHP кто-нибудь знает? Пожалуйста, сообщите, и если вы напишите подпрограмму для временного решения этой проблемы, это будет оценено. Спасибо вперед.

0

Решение

Можете ли вы попробовать это:

function pre_up($str){
$str = str_replace('i', 'İ', $str);
$str = str_replace('ı', 'I', $str);
return $str;
}
echo mb_strtoupper(pre_up('Turkish capitals for ğ, i, ı, ş in uppercase'), 'UTF-8');

Я не знаю турецкого, это правильно?

Выход

ТУРЕЦКИЙ КАПИТАЛ ДЛЯ FOR, İ, I, UP IN UPPERCASE

2

Другие решения

mb_strtoupper не знает язык Для обработки этих видов преобразований вы можете использовать Transliterator например,

echo Transliterator::create("tr-Upper")
->transliterate('Turkish capitals for ğ, i, ı, ş in uppercase');

выходы:

TURKİSH CAPİTALS FOR Ğ, İ, I, Ş İN UPPERCASE
1

Вы можете написать свою собственную функцию для этого:

function trkish_upper($str){
$find = array('i', 'ı'); //any turkish chars
$replace = array('İ','I');
$new = str_replace($find,$replace,$str);
return $new;
}
0
По вопросам рекламы [email protected]