PHP « Поиск слова/словосочетания в тексте
Господа, ситуация следующая.
Есть типы слов, в соответствии с которыми мне нужно искать.
1. -word - стоп слово (вхождение). Если нахожу, текст не прошел проверку.
2. -"and word " - стоп слово/словосочетание. Если нахожу, текст не прошел проверку. Разница с первым типом в том, что нужно искать точное соответствие.
К примеру есть строка: number and words. В данном случае соответствие не должно быть найдено.
И number and word. В данном случае должно быть найдено.
С первым типом все понятно, а вот со вторым нет. Весь инет прогуглил. Регулярки, все что смог найти, перепробовал. Ничего не выходит.
И собственно сам вопрос. Как найти в тексте это точное соответствие?
Может есть у кого-то регулярка такая? Или был опыт работы с подобными задачами?
Есть типы слов, в соответствии с которыми мне нужно искать.
1. -word - стоп слово (вхождение). Если нахожу, текст не прошел проверку.
2. -"and word " - стоп слово/словосочетание. Если нахожу, текст не прошел проверку. Разница с первым типом в том, что нужно искать точное соответствие.
К примеру есть строка: number and words. В данном случае соответствие не должно быть найдено.
И number and word. В данном случае должно быть найдено.
С первым типом все понятно, а вот со вторым нет. Весь инет прогуглил. Регулярки, все что смог найти, перепробовал. Ничего не выходит.
И собственно сам вопрос. Как найти в тексте это точное соответствие?
Может есть у кого-то регулярка такая? Или был опыт работы с подобными задачами?
1 ответов
Вот регулярное выражение
$regexp = '/[\s](and\s+word)[\s,.]/i';
В моем случае нашло то, что Вы просили, пропустив то, что не нужно искать. На его основе можно уже придумать универсальное решение, нужно только немножко поработать. Кстати, сама пара стоп слов будет, соответственно, находиться в $2, т.к. $1 - это все найденное выражение (если речь о реализации regext в php).
Надеюсь, что чем-то помог.