![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| sanitarn |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 3.10.2014 Репутация: нет Всего: нет |
Всем привет, возник вопрос, хочу банально сделать форму дял ввода текста, после просчет его водности и тошноты, так вот.
Имею текст, нужно найти в тексте все точные вхождения из массива, затык в том, что через preg_match_all он находит все что угодно, то есть cat и catalog, а нужно точное совпадение. |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Ну дык и искать надо '#\bcat\b#', чтобы не попадался catalog
Это сообщение отредактировал(а) ksnk - 25.6.2015, 17:22 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| sanitarn |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 3.10.2014 Репутация: нет Всего: нет |
Не вариант, так ничего не находит:
|
|||
|
||||
| sanitarn |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 3.10.2014 Репутация: нет Всего: нет |
Решил таким способом preg_match_all ('/\s+'.$slovo.'\s+/', $text, $matches);
|
|||
|
||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
И что, первое слово тоже ловит?
Я бы делал вот так
, но пример и так нормально работает и в первом и во втором случае выдает
Добавлено через 3 минуты и 5 секунд Для UTF-8 лучше добавить модификатор /u в регулярку и /s для поиска по многострочным строкам. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
еще бы. в двойных кавычках спецсимволы экранируют.
но '\b' в данном случае это не то что надо, т.к. ищутся не слова (с точки зрения preg). так что
Добавлено через 2 минуты и 16 секунд ну или да)) |
||||
|
|||||
| sanitarn |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 3.10.2014 Репутация: нет Всего: нет |
Спасибо, а теперь такой вопрос, как посчитать сколько данных найдено в каждом массиве? При помощи count, но как? Суммировать все данные?
|
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
sanitarn, count($matches[0]), если что нашлось.
Добавлено через 1 минуту и 58 секунд baldina, Для вот такого примера - использование ограничителей-пробелов не будет работать. Слово Я не удастся найти 3 раза. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| sanitarn |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 3.10.2014 Репутация: нет Всего: нет |
||||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
||||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Ну да, наверное, в том же цикле, что и слова ищешь. Задача-то какая стоит?
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| sanitarn |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 3.10.2014 Репутация: нет Всего: нет |
||||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
И что не получилось?
+= ? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| sanitarn |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 3.10.2014 Репутация: нет Всего: нет |
||||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Цикл есть? Вроде есть
Снаружи заведи переменную. $summ , к примеру. В цикле прибавляй к ней нужные значения $summ+=count($matches[0]); Цикл кончился - в переменной все вхождения всех стопслов. Это было нужно? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |