Автор Тема: Как пересести слово в нижний регистр?  (Прочитано 4871 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kot

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kot.dax.ru
Перевести надо именно слово, написанное ПОЛНОСТЬЮ большими буквами. Задача следующая: Есть текст, в котором некоторые слова пишутся БОЛЬШИМИ буквами. Надо только эти слова перевести в нижний регистр. Причем не допускаются следующие замены:
Слово --> слово,
сЛово --> слово...

Заранее огромное спасибо.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Как пересести слово в нижний регистр?
« Ответ #1 : 29 Ноября 2001, 22:50:57 »
Вроде так работает:

<?php
$a
="АААа БББ ббб AS";
function 
my_lowcase($source_text)
{
   
$regExp=\'/(?<=\\s)([A-ZА-Я]+)(?=\\s|$)/es\';
   $res_text=preg_replace($regExp,"strtolower(\'\\\\1\')",$source_text);
   return $res_text;
}

echo strtolower($a)."\\n";
echo my_lowcase($a);;
?>
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн kot

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kot.dax.ru
Как пересести слово в нижний регистр?
« Ответ #2 : 30 Ноября 2001, 12:08:06 »
Не работает :-(
Вот что я вижу при выполнении этого кода:

1) АААа БББ ббб as
Ну, с этим понятно, потому что strtolower работает только с английскими буквами и не делает разницу полностью ли слово написано заглавными или нет...

2) АААа БББ ббб AS - т.е. my_lowcase вообще ничего не делает :-(

В чем тут проблема?
Заранее огромное спасибо.

Оффлайн DaBugi

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://dabugi.ok.kg
Как пересести слово в нижний регистр?
« Ответ #3 : 30 Ноября 2001, 18:23:54 »
$second=strtr($from,"АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЬЪЭЮЯ","абвгдеёжзиклмнопрстуфхцчшщьъэюя");

Соответственно у тебя в from - исходная строка, в second - уже обработанная...

Только алфавит проверьте, я с русским в неладах :)
« Последнее редактирование: 30 Ноября 2001, 18:29:22 от DaBugi »

Оффлайн kot

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kot.dax.ru
Как пересести слово в нижний регистр?
« Ответ #4 : 01 Декабря 2001, 15:10:37 »
Это тоже не то, что надо, потому как переведутся в нижний регистр ВСЕ заглавные буквы (я уже так пробовал), а мне надо (напоминаю в очередной раз:) чтобы пребразовывались слова которые ПОЛНОСТЬЮ написаны большими буквами...

Какие есть еще варианты?
Заранее огромное спасибо.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Как пересести слово в нижний регистр?
« Ответ #5 : 01 Декабря 2001, 22:01:51 »

function my_lowcase($source_text)
{
   
$regExp=\'/(?<=\\s|^)([A-ZА-Я]+)(?=\\s|$)/es\';
   $res_text=preg_replace($regExp,"strtolower(strtr(\'\\\\1\',\'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ\',\'абвгдеёжзийклмнопрстуфхцчшщьыъэюя\'))",$source_text);
   return $res_text;
}
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн kot

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kot.dax.ru
Как пересести слово в нижний регистр?
« Ответ #6 : 02 Декабря 2001, 13:51:27 »
Макс, ну не работает у меня этот код :-(
Не знаю в чем беда. Принцип понял, но текст вообще не меняется... Ты проверял?

Заранее огромное спасибо.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Как пересести слово в нижний регистр?
« Ответ #7 : 02 Декабря 2001, 14:52:17 »
Цитировать
Ты проверял?
Проверял, но я под WIN98 сижу - там работает.

Дело наверное в том что в strtr(\'\\\\1\' ...) идет 2 слеша перед единицей - это форум их урезал до одного. Попробуй второй слеш добавить.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28