Мой вопрос — скорее объяснение для турецких колледжей, которые испытывают проблемы с нашими забавными персонажами.
Это наверняка PHP 5 имеет ошибка капитализируя и, следовательно, сопоставляя их.
echo mb_strtoupper («Турецкие столицы для ğ, i, ı, ş в верхнем регистре», «UTF-8»);
дает результат: «ТУРЕЦКИЙ КАПИТАЛ ДЛЯ Ğ, I, I, Ş ВЕРХНИЙ».
Но это неправильно. Правильный вывод должен быть «TURKİSH CAPİTALS FOR Ğ, İ, I, İ IN UPPERCASE»
Проблема в нашем языке у нас есть «я» в столицах «İ» и «ı» в столицах «I».
Я думаю, вы видите проблему.
Кому мы сообщим об этом ошибка в PHP кто-нибудь знает? Пожалуйста, сообщите, и если вы напишите подпрограмму для временного решения этой проблемы, это будет оценено. Спасибо вперед.
Можете ли вы попробовать это:
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
mb_strtoupper
не знает язык Для обработки этих видов преобразований вы можете использовать Transliterator
например,
echo Transliterator::create("tr-Upper")
->transliterate('Turkish capitals for ğ, i, ı, ş in uppercase');
выходы:
TURKİSH CAPİTALS FOR Ğ, İ, I, Ş İN UPPERCASE
Вы можете написать свою собственную функцию для этого:
function trkish_upper($str){
$find = array('i', 'ı'); //any turkish chars
$replace = array('İ','I');
$new = str_replace($find,$replace,$str);
return $new;
}