Автоматически изменить верхний регистр слов на нижний

12
K1
На сайте с 08.10.2009
Offline
21
7548

Всем привет. Подскажите пожалуйста следующее:

Есть большой текстовый файл. В нем некоторые слова написанные полностью в верхнем регистре(например: СПРАВКА). Я ищу способ автоматически изменить регистр этих слов на нижний.

Слов очень много и вручную я не справлюсь.

Изменить регистр всего текста методом shift+F3 не подходит, мне нужно изменить только регистр слов с вышеуказанными признаками.

I
На сайте с 23.09.2009
Offline
15
#1

word - формат - регистр - как в предложениях

в последнем ворде не знаю где :)

Кофейник
На сайте с 11.07.2009
Offline
78
#2

Как удалить это грёбаное сообщение?

http://immater1um.livejournal.com/ (http://immater1um.livejournal.com/)
K1
На сайте с 08.10.2009
Offline
21
#3

ipirate, да не, то что ты предложил это по сути то же самое shift+F3. В этом случае регистр будет меняться глобально во всем документе. В этом случае имена собственные и слова начала предложения станут тоже писаться с маленькой буквы, а мне это не нужно.

Мне нужно какое-нибудь решение, которое бы позволило найти слова с верхним регистром, задав определенный шаблон(например искать слова с 2-мя и более буквы в верхнем регистре), а потом автоматически заменять их верхний регистр на нижний.

BrokenBrake
На сайте с 03.03.2007
Offline
194
#4

Если речь про Microsoft Word, то насколько я помню, там есть довольно мощные шаблоны поиска и замены, почти сравнимые с регулярными выражениями.

malls
На сайте с 08.08.2005
Offline
255
#5

Чего-то ответы в разделе "Веб-строительство" неправильные какие-то... :)

Надо взять пыху, загнать в массив коды прописных символов - и проверять последовательное их наличие в пределах одного слова. ☝

BrokenBrake
На сайте с 03.03.2007
Offline
194
#6
malls:
Надо взять пыху, загнать в массив коды прописных символов - и проверять последовательное их наличие в пределах одного слова.

Чего, чего? Страшноватое решение какое-то.

Вообще-то в PHP есть функции повышения/понижения регистра для строк, так что достаточно какого-нибудь простого preg_replace с обработкой результата.

malls
На сайте с 08.08.2005
Offline
255
#7
BrokenBrake:
Чего, чего? Страшноватое решение какое-то.

Вообще-то в PHP есть функции повышения/понижения регистра для строк, так что достаточно какого-нибудь простого preg_replace с обработкой результата.

кстати да... в preg_replace можно же загнать что-то вроде: [А-Я]{3,} в окружении пробелов и прочей пунктуации...

Не подумал!

Но с пыхой все равно я первый предложил! :)

ТС, как то так будет выглядеть: preg_replace('~([ \t\n]*[А-Я]{3,}[ ,\.\t\n;!\?]*)~',strtolower($1),$text);

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#8

malls, эт если local русская стоит, не так ли? :)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
malls
На сайте с 08.08.2005
Offline
255
#9
LEOnidUKG:
malls, эт если local русская стоит, не так ли? :)

Я такие проблемы решаю в PHPExpertEditor - кому не нравится - я не виноват.

А local она по определению не русская, в русском языке даже букв таких нет! ☝

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#10
malls:
Я такие проблемы решаю в PHPExpertEditor - кому не нравится - я не виноват.
А local она по определению не русская, в русском языке даже букв таких нет! ☝

:)

Ну просто если нет локалки русской, то можно вот так:


function down($str)
{
$preg_rus1="йцукенгшщзхъфывапролджэячсмитьбюё";
$preg_rus2="ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ";
return strtr($str,$preg_rus2,$preg_rus1);

}

И потом уже юзать

echo down('БОЛЬШИЕ');
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий