- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Подскажите пожалуйста такую функцию.
Стандартная strpos не подходит потому что она возвращает TRUE для слова "кофе" и строки "кофеин это яд", а надо что бы было FALSE.
Может кто в регулярных выражениях разбирается, подскажите.
Спасибо.
А если строку разбить на подстроки с помощью explode. А затем в цикле прогнать массив на сравнение с искомым словом? :)
Хотя конечно думаю есть вариант попроще, и специалисты сейчас подскажут:)
Подскажите пожалуйста такую функцию.
Пишите в личку помогу.
Так сильно медленно.
И уже кстати нашлось решение:
preg_match('~\bкофе\b~i','кофеин это яд')
Всем спасибо кто откликнулся на зов о помощи :)
Массивом так:
$a=explode(' ',$stroka); // заменить все небуквы на пробелы и удалить двойные пробелы
if(in_array('кофе',$a)) echo 'yes';
а регулярным выражением, лучше так:
preg_match('/(^|[\W])кофе([\W-]|$)/i',$stroka);
или так, если дефис не подходит preg_match('/(^|[\W-])кофе([\W-]|$)/i',$stroka); - учтены положения в начале и конце строки
Подскажите пожалуйста такую функцию.
Стандартная strpos не подходит потому что она возвращает TRUE для слова "кофе" и строки "кофеин это яд", а надо что бы было FALSE.
Может кто в регулярных выражениях разбирается, подскажите.
Спасибо.
на самом деле стрпос использовать корректнее, чем подключать сюда регвыражения.
просто функция стрпос может возвращать не только позицию в строке, а результат нахождения.
кроме того, неоходимо корректно результат проверить. просто так в ИФ подставить от балды нельзя.
рабочий пример:
в данном случае строка встречается в позиции 0, что при подстановке в if () даёт неуспешный результат, так как ноль интерпретируется как false.
необходимо проверять успешность результата поиска, сравнивая с булевым значением, и соответствием типов (!==)
Sveta Prokopeva,
mustafa,
Не понял, а зачем \ перед пробелом?
Sveta Prokopeva,
preg_match("/[^а-я]*$key[^а-я]*/isU", $text);
Что-то вроде, чтобы букв рядом не было, а всякие пробелы, запятые и т.п. могли быть.
на самом деле стрпос использовать корректнее, чем подключать сюда регвыражения.
Абсолютно не согласен :)
mustafa, Segey, вариант, придуманный Светой - самый правильный. \b (т.е. word boundary) специально для того и делали ;)
Коля Дубр,
Ну в общем-то согласен, можно заменить на "символ образ слово" или как так, это у мну память дырявая :)
Только синтаксис у нее какой-то непривычный, я обычно не так пишу...
Абсолютно не согласен
Упс... мой пост можно игнорировать. всё совершенно наоборот как-то прочитал :)
Действительно, если нужно целые слова, то стрпос не пойдёт.