PHP - 精确匹配句子中的字符串

PHP - Exact match string in a sentence

我有以下函数来执行 "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;
    }
}

请问我怎样才能做到完全匹配?

试试这个。

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

请尝试 "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";

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

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

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

你可以试试这个:

  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”