如何检查句子中是否存在单词

Taf*_*afu 5 php search strstr

例如,如果我的句子是$sent = 'how are you';,如果我搜索$key = 'ho'使用strstr($sent, $key)它将返回,true因为我的句子ho在其中.

我正在寻找的是一种方法,如果我只搜索你是怎么回事,你或者是你.我怎样才能做到这一点?

cod*_*ict 7

您可以使用preg-match使用带有字边界正则表达式的函数:

if(preg_match('/\byou\b/', $input)) {
  echo $input.' has the word you';
}
Run Code Online (Sandbox Code Playgroud)


Ala*_*air 6

如果你想检查同一个字符串中的多个单词,并且你正在处理大字符串,那么这个更快:

$text = explode(' ',$text);
$text = array_flip($text);
Run Code Online (Sandbox Code Playgroud)

然后你可以检查单词:

if (isset($text[$word])) doSomething();
Run Code Online (Sandbox Code Playgroud)

这种方法很快.

但是要检查短字符串中的几个单词,请使用preg_match.

更新:

如果你真的要使用它,我建议你这样实现它以避免问题:

$text = preg_replace('/[^a-z\s]/', '', strtolower($text));
$text = preg_split('/\s+/', $text, NULL, PREG_SPLIT_NO_EMPTY);
$text = array_flip($text);

$word = strtolower($word);
if (isset($text[$word])) doSomething();
Run Code Online (Sandbox Code Playgroud)

然后双倍空格,换行符,标点符号和大写字母不会产生错误否定.

这种方法在检查大字符串中的多个单词(即整个文本文档)时要快得多,但如果你想要做的就是查找普通大小字符串中是否存在单个单词,那么使用preg_match会更有效.