Как убрать только русские буквы в нижний регистр?

Pustota

Новичок
Как убрать только русские буквы в нижний регистр?

Помогите с регулярками. Не соображу что-то.
Есть товар "ЭЛЕКТРИЧЕСКАЯ ДРЕЛЬ MAKITA DR-512"
Нужно его вывести как "Электрическая дрель MAKITA DR-512"
Помогите, как это сделать?
 

AmdY

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

-~{}~ 29.01.10 20:49:

не дружишь с регулярками, используй str_replace, это даже проще
 

Pustota

Новичок
C регулярками у меня туго, буду признателен, если подскажете решение.
Пробовал так:

PHP:
function sentence_case($string) {
    $sentences = preg_split('/([.?!]+)/', $string, -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
    $new_string = '';
    foreach ($sentences as $key => $sentence) {
        $new_string .= ($key & 1) == 0?
            ucfirst(strtolower(trim($sentence))) :
            $sentence.' ';
    }
    return trim($new_string);
} 

function Cname($good_name)
{
return trim(ereg_replace("![А-Я]+(-[А-Я]+)*!i",
                     sentence_case("\\0"), $good_name));
}
Брал с php.net
По поводу названия топика - вроде ничего противоречивого. Просто в сообщении дополнил, что неплохо было бы первую букву заглавной сделать.
 

AmdY

Пью пиво
Команда форума
да, тогда лучше только вариант str_replace, посмотри мануал и останется только массив замен составить или ещё дополнительно почитать о range,чтоб не ручками
 

AmdY

Пью пиво
Команда форума
конечно, но стоит ли? пример приведённый вами абсолютно левый.

preg_replace_callback, тьфу, начал было писать набросок, зашёл в ман чтобы уточнить, а там прям пример, нужно только регулярку только для русских буковок вставить
 
Сверху