【问题标题】:PHP - Exact match string in a sentencePHP - 一个句子中的完全匹配字符串
【发布时间】:2023-04-10 05:50:02
【问题描述】:

我有以下功能来做一个"exact match" 的模式($searchPat) 造句($sourceStr)

function isUsed($sourceStr, $searchPat) {
 if (strpos($sourceStr, $searchPat) !== false) {
    return true;
    } else {
    return false;
    }
}

但是,这并不完全匹配。我将函数更改如下,但这甚至没有执行。

function isUsed($sourceStr, $searchPat) {
if (preg_match("~\b[$sourceStr]\b~", $searchPat)) {
    return true;
    } else {
    return false;
    }
}

请问如何进行精确匹配?

【问题讨论】:

  • 取出[],那些列表允许的字符。 $sourceStr 是要搜索的句子还是要查找的词?
  • 你好克里斯 - 谢谢。你的理解是正确的。 $sourceStr 是要搜索的句子,$searchPat 是要搜索的项目。
  • 你也可以使用stripos()。
  • 你好 Devashish - 谢谢。正如我在他的问题中提到的那样,strpos 并没有完全匹配。你能帮我修改一下代码吗?
  • stripos 会返回误报。例如,如果搜索 bee,则单词 been 将匹配。

标签: php regex preg-match


【解决方案1】:

你可以试试这个:

  function isUsed($string_to_search, $source_String) {
    if (preg_match("/$string_to_search/", $source_String)) {
    return true;
    } else {
     return false;
    }
 }

您可以根据需要进行更改。

不区分大小写: preg_match("/$string_to_search/i", $source_String)
边界条件: preg_match("/\b$string_to_search\b/ i", $source_String)
特殊字符:如果您的字符串中有任何特殊字符以确保安全,请将其替换为 '\special_character'

【讨论】:

  • 谢谢萨希尔。感谢您的帮助
【解决方案2】:

[] 是一个字符类。这列出了您想要允许的字符,例如 [aeiou] 将允许元音。您的变量也是倒序的,首先是模式,然后是要匹配的字符串。试试这个:

function isUsed($sourceStr, $searchPat) {
     if (preg_match("~\b$searchPat\b~", $sourceStr)) {
         return true;
     } else {
         return false;
     }
}

补充说明,这是区分大小写的,所以Be 不会匹配be。如果您传入的值将包含特殊字符,则应使用 preg_quote 函数 preg_quote($variable, '~')。您可能还想连接变量,以便清楚地知道这是一个变量而不是正则表达式的一部分。正则表达式中的$ 表示字符串的结尾。

【讨论】:

    【解决方案3】:

    请尝试“preg_match”进行匹配。

    $string = 'test';
    if ( preg_match("~\btest\b~",$string) )
      echo "matched";
    else
      echo "no match";
    

    或者这样试试

    if(stripos($text,$word) !== false) 
          echo "no match";
        else
          echo "match";
    

    【讨论】:

    • 谢谢贾尔帕。感谢您的时间和帮助
    • @usert4jju7 欢迎你来:)
    【解决方案4】:

    试试这个。

    function isUsed($sourceStr, $searchPat) {
    if (preg_match("/\b".preg_quote($sourceStr)."\b/i", $searchPat)) {
        return true;
        } else {
        return false;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 2021-09-26
      • 2019-01-12
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多