Я нашел эту ссылку и отработал ее, но мне нужно расширить ее чуть дальше. Check if string contains word in arrayПоиск совпадающих слов без ложных positivis
Я пытаюсь создать скрипт, который проверяет веб-страницу на известные плохие слова. У меня есть один массив со списком плохих слов, и он сравнивает его со строкой из file_get_contents.
Это работает на базовом уровне, но возвращает ложные срабатывания. Например, если я загружаю веб-страницу со словом «title», он возвращает, что нашел слово «tit».
Моя личная ставка, чтобы удалить все html и пунктуацию, а затем взорвать его на основе пробелов и поместить каждое отдельное слово в массив? Я надеюсь, что тогда будет более эффективный процесс.
Вот мой код до сих пор:
$url = 'http://somewebsite.com/';
$content = strip_tags(file_get_contents($url));
//list of bad words separated by commas
$badwords = 'tit,butt,etc'; //this will eventually come from a db
$badwordList = explode(',', $badwords);
foreach($badwordList as $bad) {
$place = strpos($content, $bad);
if (!empty($place)) {
$foundWords[] = $bad;
}
}
print_r($foundWords);
Заранее спасибо!
Похоже, что это хорошо работает. Спасибо –
Теперь, если вы можете сделать мне еще одну услугу. Первый отправленный вами код еще вернул ложный результат, но ваше обновление исправило его. Можете ли вы объяснить, что делает \ b? За свою жизнь я не могу обернуть голову вокруг регулярного выражения. –
@DeveloperGee: Как я упоминаю в ответе, '\ b' утверждает позицию на границе слова; в основном где-нибудь между символом слова (буквы, цифры и т. д.) и символом без слов (все остальное). Для получения дополнительной информации см. Http://www.regular-expressions.info/wordboundaries.html –