Отправляет email-рассылки с помощью сервиса Sendsay

[prg] PHP: функция strtolower не обрабатывает кириллицу

Здравствуйте.
Столкнулся с проблемой некорректной (по крайней мере, не соответствующей моим
ожиданиям) работы функции strtolower.
Симптоматика такая:
<?php
$str = "HELLO МИР!";
$str = strtolower($str);
echo $str;

Этот скрипт выводит "hello МИР!", а не "hello мир!", как я ожидаю. То есть обрабатывается
только ASCII.
Использую кодировку UTF-8. Пытался донести эту мысль до MBString, вписывая в
.htaccess следующие директивы:
php_value mbstring.internal_encoding UTF-8
php_value mbstring.http_input UTF-8
php_value mbstring.http_output UTF-8
Проблему это не решило. Support хостера деревянный, поэтому приходится ковыряться
самому и заниматься непрофильными задачами.
Что ещё можно сделать?
Успехов. Никита.

Ответить   Mon, 21 Oct 2013 00:28:22 +0400 (#2851793)

 

Ответы:

Vande omentaina, "Nikita"!

Добавить ровно три символа.
// This is PHP, amigo. It doesn't support unicode. No, it doesn't.
// Really.
$str = mb_strtolower($str);

Ответить   Mon, 21 Oct 2013 00:16:49 +0300 (#2851801)

 

Здравствуйте, Menelion Elensuule.

Да, так работает. Спасибо!
Но мне интересно, почему не работало без префикса "mb_"? Я знаю, что на
других серверах без проблем отрабатывала и просто strtolower. То есть
существует какой-то нюанс именно серверной конфигурации.
Успехов. Никита.

Ответить   Mon, 21 Oct 2013 12:58:25 +0400 (#2851993)

 

Vande omentaina, "Nikita"!

попробуй копнуть в сторону SetLocale. То есть:
<?php
setLocale(LC_ALL, array("ru_RU", "ru"));
$str=strtolower($str);

Но у меня, замечу, это не работало никогда.

Ответить   Mon, 21 Oct 2013 15:56:49 +0300 (#2852156)

 

Добрый день, Menelion Elensuule!
Вы писали 21 октября 2013 г.:

Скажите пожалуйста, в какой подключаемой к php библиотеке функции с префиксом
mb_?
У меня это не работает, а значит нужно подкинуть библиотеку.

Ответить   Tue, 22 Oct 2013 14:59:58 +0400 (#2852936)

 

Добрый день, Menelion Elensuule!
Вы писали 21 октября 2013 г.:

Я писал, что этой функции нет, забыл вставить ошибку.
Fatal error: Call to undefined function mb_strtolower()

Ответить   Tue, 22 Oct 2013 15:03:03 +0400 (#2852938)

 

Добрый вечер, Arsenal!
Мы писали 22 октября 2013 г.:

Нашёл таки. Библиотека php_mbstring.dll
Так что мой вопрос уже не актуален. :)

Ответить   Tue, 22 Oct 2013 19:48:40 +0400 (#2853223)