Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 31
1

Выделение красным цветом слов маленькими буквами до 4 букв

08.12.2016, 19:09. Показов 3682. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Данный код выделяет красным цветом слова, написанные заглавными буквами, длина которых 5 букв и более. Помогите, пожалуйста, переделать его так, чтобы происходило выделение красным цветом слов, написанных маленькими буквами, длина которых 4 буквы и меньше.
PHP
1
2
3
4
5
6
$text = '<p>Resource - ПЕРЕМЕННАЯ, содержащая ссылку на ВНЕШНИЙ ресурс.</p>';
echo "Исходный текст:$text";
 
$text = preg_replace('!([A-Z|А-Я]{5,})!u','<strong><span style="color: red;">\\1</span></strong>',$text);
echo "Полученный текст:$text"
?>
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2016, 19:09
Ответы с готовыми решениями:

Выделение красным цветом, сигнализация
Здравствуйте, есть запрос: &lt;?php // коннект к базе $conn = oci_connect(&quot;questions&quot;,...

Выделение из ячейки слов с прописными буквами
Здравствуйте! Уважаемые форумчане, есть проблема. В ячейках имеется длинное описание товара. В...

Выделение цветом слов
Привет! Нужно выделить цветом поисковую фразу. Все нормально работает, только если будет точное...

RichEdit - Выделение цветом слов
У мя условие, я выделяю текст в ричедите, по нажатию кнопки проверяется если слово больше 12...

14
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
08.12.2016, 19:19 2
Цитата Сообщение от Dark Illusion Посмотреть сообщение
$text = preg_replace('!([A-Z|А-Я]{5,})!u','<strong><span style="color: red;">\\1</span></strong>',$text);
вроде должно быть так
PHP
1
$text = preg_replace('!([a-z|а-я]{,4})!u','<strong><span style="color: red;">\\1</span></strong>',$text);
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
08.12.2016, 19:32 3
Цитата Сообщение от Dark Illusion Посмотреть сообщение
написанные заглавными буквами, длина которых 5 букв
А еще попробуйте написать подряд пять '|', тоже выделит, и слова из пяти и более заглавных букв смеси латиницы, кириллицы и прямых слешей (и без них) тоже выделит. А вот с буквой Ё не выделит.
Цитата Сообщение от Dark Illusion Посмотреть сообщение
PHP
1
!([A-Z|А-Я]{5,})!u
PHP
1
$text = preg_replace('!\b([a-z]{5,}|[а-яё]{5,})\b!u', '<strong><span style="color:red">\\0</span></strong>', $text);
1
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 31
08.12.2016, 20:55  [ТС] 4
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
$text = preg_replace('!\b([a-z]{5,}|[а-яё]{5,})\b!u', '<strong><span style="color:red">\\0</span></strong>', $text);
Подскажите, а как сделать выделение красным цветом слов, написанных маленькими буквами, длина которых 4 буквы и меньше.
Попробовал вот так, но оно работает некорректно - не выделяет вообще ничего.
PHP
1
$text = preg_replace('!\b([a-z]{,4}|[а-яё]{,4})\b!u', '<strong><span style="color:red">\\0</span></strong>', $text);
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
08.12.2016, 21:03 5
Лучший ответ Сообщение было отмечено Kerry_Jr как решение

Решение

Dark Illusion, тьфу ты, не исправил
PHP
1
$text = preg_replace('!\b([a-z]{1,4}|[а-яё]{1,4})\b!u', '<strong><span style="color:red">\\0</span></strong>', $text);
Нижнюю границу нужно обязательно указывать.
1
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 31
08.12.2016, 21:06  [ТС] 6
Добавлено через 2 минуты
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Нижнюю границу нужно обязательно указывать.
Заработало, большое спасибо.
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
08.12.2016, 21:10 7
Цитата Сообщение от Dark Illusion Посмотреть сообщение
Заработало, большое спасибо.
Еще один нюанс
PHP
1
$text = preg_replace('!\b[^<]([a-z]{1,4}|[а-яё]{1,4})\b!u', '<strong><span style="color:red">\\0</span></strong>', $text);
Иначе короткие HTML-теги тоже попадут под раздачу
1
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 31
08.12.2016, 21:15  [ТС] 8
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
$text = preg_replace('!\b[^<]([a-z]{1,4}|[а-яё]{1,4})\b!u', '<strong><span style="color:red">\\0</span></strong>', $text);
Уже заметил, исправил удалением этих тегов)
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
08.12.2016, 21:19 9
Цитата Сообщение от Dark Illusion Посмотреть сообщение
Уже заметил, исправил удалением этих тегов)
Не лучшая идея Так, а теперь, надеюсь, окончательный вариант
PHP
1
$text = preg_replace('!\b(?<!<|/)([a-z]{1,4}|[а-яё]{1,4})\b!u', '<strong><span style="color:red">\\0</span></strong>', $text);
1
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 31
09.12.2016, 01:27  [ТС] 10
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
$text = preg_replace('!\b(?<!<|/)([a-z]{1,4}|[а-яё]{1,4})\b!u', '<strong><span style="color:red">\\0</span></strong>', $text);
Да, и ещё раз спасибо.

Добавлено через 7 минут
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
$text = preg_replace('!\b(?<!<|/)([a-z]{1,4}|[а-яё]{1,4})\b!u', '<strong><span style="color:red">\\0</span></strong>', $text);
Всё-таки не окончательный, пишет Unknown modifier '<' .
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
09.12.2016, 09:23 11
Dark Illusion, попробуйте поменять символ-ограничитель регулярки, вместо '!' подставьте, например, '#', '~', '%'.
1
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 31
04.01.2017, 13:54  [ТС] 12
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Dark Illusion, попробуйте поменять символ-ограничитель регулярки, вместо '!' подставьте, например, '#', '~', '%'.
Спасибо, помогло.
PHP
1
$text = preg_replace('#\b(?<!<|/)([a-z]{1,4}|[а-яё]{1,4})\b#u', '<strong><span style="color:red">\\0</span></strong>', $text);
0
4 / 4 / 2
Регистрация: 18.12.2012
Сообщений: 102
17.01.2017, 00:57 13
Kerry_Jr,
\b - это граница слова?
что обозначает параметр \\0?
0
Эксперт PHP
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
17.01.2017, 03:27 14
Пегас, \\0 здесь это подстановка найденного достаточно \0
Kerry_Jr, можете пояснить, что обозначает у вас (?<!<|/) в выражении
атак вроде то-же работает
PHP
1
$text = preg_replace('#\b[a-z-а-яё]{1,4}\b#u', '<span class="red">\0</span>', $text);
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
17.01.2017, 10:59 15
Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
можете пояснить, что обозначает у вас (?<!<|/) в выражении
Просмотр вперед и назад
0
17.01.2017, 10:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2017, 10:59
Помогаю со студенческими работами здесь

Выделение цветом слов в RichEdit
Добрый день! Понимаю, что такая тема была не раз, но я так и не смог разобраться в этом. Мне нужно...

Выделение цветом слов в richtextbox
Здравствуйте! Есть код: private void richTextBox1_TextChanged(object sender, EventArgs e) ...

Слово вводится большими латинскими буквами,выводится маленькими латинскими буквами
слово вводится большими латинскими буквами,выводится маленькими латинскими буквами Добавлено...

VBA Word выделение слов,написанных латинскими буквами
Создать макрос, выделяющий слова, написанные латинскими буквами. Есть макрос,который просто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru