我试图查看字符串中的单词是否与文件中的单词完全匹配。所以说我有一句话:
"我喜欢足球"
foreach ($match as $macthes)
{
if (stripos("I love football",$match) !== false) {
break;
}
}
do something here
上面的方法有效,它会找到爱,然后做我想要的东西,但是当有人输入一个较短版本的单词时它也有效,所以说我正在寻找"高兴"但有人只是放入"请"它会显示结果,我不想要那样。
如果找到完全匹配,我有什么方法可以运行我的方法吗?
答案 0 :(得分:1)
要查找完整的单词,您可以使用带有边界字符的正则表达式:\b
if (preg_match('/\b'.preg_quote($emotion).'\b/', $value['message'])) {
重要的是将\b
放在您要查找的单词或短语之前和之后,这表示单词边界:
单词边界是主题字符串中当前字符和前一个字符不匹配\ w或\ W(即一个匹配\ w而另一个匹配\ W)或者开头或结尾的位置如果第一个或最后一个字符分别与\ w匹配,则为字符串。 http://uk3.php.net/manual/en/regexp.reference.escape.php
或者更简单地说就是我们如何使用它:之前和之前的角色字符串匹配后必须是不能继续单词的东西。如文件/行的开头或结尾,或空格,标点符号等
我们还使用preg_quote,以确保如果任何$emotion
值包含特殊字符,则会对其进行转义,以便它们不会改变表达式的含义。
答案 1 :(得分:0)
下面的函数将搜索目录中所有文件中的单词。 $matches
数组将为您提供找到该单词的所有文件。我想这可能有所帮助。
foreach (glob("<directory>/*.txt") as $search)
{
$contents = file_get_contents($search);
if (!strpos($contents, "text"))
continue;
else
$matches[] = $search;
}
if(sizeof($matches) == 0)
{
echo "Word not found";
}
else
{
echo "Word found";
}
答案 2 :(得分:0)
<?php
foreach ($emotions as &$emotion) {
$words = file_get_contents('completeEmotions.txt');
$word = strpos($words, $value['message']) ? true : false;
if ($word) {
echo 'word found';
} else {
echo 'word not found';
}
}
?>
使用此选项,然后在文本文件中,将每个单词放在单独的行中,例如
WORD1
WORD2
WORD3
依旧......