Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 2
Регистрация: 20.02.2015
Сообщений: 64

Выделение определенных слов не зависимо от регистра

27.10.2019, 13:34. Показов 2368. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста решить несколько задачек.

1. как ограничить количество символов $regs[1] надо чтобы выделялись слова имеющие не менее 3 символов.
2. как сделать регистронезависимый поиск в preg_replace символы бывают и латиница и кириллица.
3. мне важно найти самое быстрое решение, как можно оптимизировать этот код может что-то есть побыстрее.

PHP
1
2
3
4
5
while (@eregi("[^\>](".$change.")[^\<]", " ".$title." ", $regs)) {
 
$title=preg_replace("/".$regs[1]."/Usi","<font color=#000000><b>".$regs[1]."</b></font>",$title);
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.10.2019, 13:34
Ответы с готовыми решениями:

таблица рандомных слов. выделение определенных слов
Задание: Таблица с разными словами; выделить все ячейки, слова в которых начинаются и оканчиваются на одну и ту же букву (и содержащее не...

Выделение жирным определенных слов
Привет всем.Имеется проект WPF и на форме есть элемент TextBlock. В коде считывается поле из БД и заносится в TextBlock.Вопрос: Как сделать...

Выделение русских слов без учёта регистра символов
Имеется строка, нужно выделить в ней слово, причём выделить если оно найдено и без чувствительности регистра букв (русские символы!). ...

10
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
27.10.2019, 13:45
title
1. Дописать символьный диапазон {3,}:
"/" . $regs[1] . "{3,}/Usi"

2. У вас уже включён регистронезависымый поиск модификатором "i":
"/" . $regs[1] . "{3,}/Usi"

3. В PHP 7 и выше регулярные выражения работают довольно быстро. Бывает даже так, что набор в десяток строк PHP-кода работает медленнее, чем строка шаблона регулярных выражений.
0
0 / 0 / 2
Регистрация: 20.02.2015
Сообщений: 64
28.10.2019, 11:12  [ТС]
1. когда цифру 3 в скобках ставишь начинает тормозить а потом нечего не выдает.

2. да вроде бы как должен не учитывать регистр с модификатором "i" но он почему-то учитывает.

спасибо за ответ решился и сменил версию на php 7 но не получается правильно заменить eregi на preg_match

так не работает
PHP
1
while (@preg_match("[/^\>](".$change.")[/^\<]", " ".$title." ", $regs)){
0
0 / 0 / 2
Регистрация: 20.02.2015
Сообщений: 64
30.10.2019, 12:41  [ТС]
Реализовать решил по другому без eregi.

а если сменить символьный диапазон 1 на 2 то слово - заработки, не выделяется.

Пример...
1. вариант:
PHP
1
2
3
4
$title=" заработки в интернете";
$change='заработки';
$title=preg_replace('/ '.$change.' {1,}/Usi',' <font color=#000000><b>'.$change.'</b></font> ',$title);
echo $title;
выдает: заработки в интернете

2. вариант:
PHP
1
2
3
4
$title=" заработки в интернете";
$change='заработки';
$title=preg_replace('/ '.$change.' {2,}/Usi',' <font color=#000000><b>'.$change.'</b></font> ',$title);
echo $title;
выдает: заработки в интернете (без выделения нужного слова).

В слове "заработки" 9 символов, почему так может быть?
0
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
31.10.2019, 00:33
Цитата Сообщение от title Посмотреть сообщение
почему так может быть?
Потому что вы указали в шаблоне 2 или более пробела после буквы "и" в слове "заработки". А пробел там один. Я немного допилил шаблон, а так же html-теги во втором аргументе функции preg_replace(), т.к. тег font давно устарел.
PHP
1
2
3
4
5
$title = " заработки в интернете";
$change = 'заработки';
 
$title = preg_replace("~$change~i", '<span style="color:orangered;">$0</span>', $title);
echo $title;
0
0 / 0 / 2
Регистрация: 20.02.2015
Сообщений: 64
31.10.2019, 07:55  [ТС]
Работает. А как теперь можно указать например что нужно выделять слова имеющие как минимум 3 символа. Пробовал по всякому, никак.
0
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
31.10.2019, 12:03
title, нужно в шаблоне прописать символьный класс для букв, и после него добавить диапазон:
PHP
1
2
3
4
$title = 'заработки в интернете';
$title = preg_replace('~\pL{3,}~u', '<span style="color:orangered;">$0</span>', $title);
 
echo $title;
0
0 / 0 / 2
Регистрация: 20.02.2015
Сообщений: 64
01.11.2019, 05:01  [ТС]
Если в тексте для проверки слово начинается с заглавной оно не заменяется, может это только у меня не работает, по разному пробовал, решения не нашел.
PHP
1
2
3
4
$title = " Заработки в интернете";
$change = 'заработки';
$title = preg_replace("~$change~i", '<span style="color:orangered;"><b>$0</b></span>', $title);
echo $title;
Цитата Сообщение от Строитель Посмотреть сообщение
title, нужно в шаблоне прописать символьный класс для букв, и после него добавить диапазон:

$title = 'заработки в интернете';
$title = preg_replace('~\pL{3,}~u', '<span style="color:orangered;">$0</span>', $title);
echo $title;
В этом случае все слова более 3 символов выделяются, а как в это переменную встроить и сделать регистронезависимым?
0
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
01.11.2019, 08:20
title, дак вы сперва разберитесь, что именно нужно искать, а потом сформулируйте вопрос. А на счёт регистронезавистмости - я предполагаю, что вы путаете её с регистроЗависимостью, потому что в моём шаблоне поиск регистроНезависимый.
1
0 / 0 / 2
Регистрация: 20.02.2015
Сообщений: 64
01.11.2019, 10:54  [ТС]
Вот что получилось (по другому пока не смог), уверен что не самое оптимальное решение, зато работает).

Теперь производится поиск и выделение нужного слова начиная с размера от 4 символов и независимо от регистра только первых букв слов.

PHP
1
2
3
4
5
6
7
8
$title = " Заработки в интернете"; /// текст в котором производим поиск
$change = 'заработки'; /// искомое слово
 
if(mb_strlen($change)>3){ /// если в искомом слове более 3 символов
$change2=mb_convert_case($change,MB_CASE_TITLE,'UTF-8'); /// на тот случай если в тексте есть заглавные буквы
$title=preg_replace("/(".$change."|".$change2.")/si","<span style='color:black;'><b>\\1</b></span>",$title); /// замена
}
echo $title;
По идее это как-то можно одним регулярным выражением написать. Пришлось искать обходные пути, так как регулярки что-то пока мне не даются.
0
 Аватар для TolikD
117 / 81 / 36
Регистрация: 30.07.2017
Сообщений: 371
02.11.2019, 21:50
Бздец чо вы тут намутили
PHP
1
2
$title = " Заработки в интернете";
echo mb_eregi_replace('[a-zа-я]{3,}', '<b>\0</b>', $title);
Добавлено через 3 часа 44 минуты
В догонку
Цитата Сообщение от title Посмотреть сообщение
По идее это как-то можно одним регулярным выражением написать.
Ну и в чем проблема, действуй ))
PHP
1
2
3
$title = " Заработки в интернете"; /// текст в котором производим поиск
$change = 'заработки'; /// искомое слово
echo preg_replace("/$change/iu", "<span style='color:black;'><b>\\0</b></span>", $title);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.11.2019, 21:50
Помогаю со студенческими работами здесь

Выделение определённых слов и словосочетаний в тексте
здравствуйте, то что спрашиваю даже и не помню примера где такое есть смысл сделать в предложении часть - два, три слова полями, это...

Выделение цветом определенных слов в label
Друзья, привет! Давненько меня здесь не было. Понимаю, что тема уже была и обсуждалась на форуме, но ничего конкретного я не нашел. Мне...

Возможно ли выделение определенных слов в Mozille?
как Можно выделить все слова &quot;Привет&quot; в Mozille?

Одинаковое положение 2-ых слов не зависимо от длины 1-ых слов(TAB)
В блокноте пишу: echo 1clovo 2clovo echo 1clovoooo 2clovo Мне надо? чтобы 2clovo'a отображались на одинаковом положение по...

Программа для слежением появлением определенных слов на определенных сайтах
Все привет! Мне необходимо быть в курсе дел по одному вопросу, но нет времени постоянно следить за десятком сайтов. Соответственно,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru