完全用PHP匹配文件中的单词

时间:2014-04-14 13:24:03

标签: php match

我试图查看字符串中的单词是否与文件中的单词完全匹配。所以说我有一句话:

"我喜欢足球"

foreach ($match as $macthes)
{
    if (stripos("I love football",$match) !== false) {
        break;
    }
}

do something here

上面的方法有效,它会找到爱,然后做我想要的东西,但是当有人输入一个较短版本的单词时它也有效,所以说我正在寻找"高兴"但有人只是放入"请"它会显示结果,我不想要那样。

如果找到完全匹配,我有什么方法可以运行我的方法吗?

3 个答案:

答案 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

依旧......