PHP-句子中的完全匹配字符串

use*_*ju7 2 php regex preg-match

我具有以下功能来 在句子中做"exact match"模式($searchPat)($sourceStr)

function isUsed($sourceStr, $searchPat) {
 if (strpos($sourceStr, $searchPat) !== false) {
    return true;
    } else {
    return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这并不完全匹配。我按如下方式更改了功能,但这甚至没有执行。

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

请问我该怎么做?

chr*_*s85 5

[]是字符类。上面列出了您要允许的字符,例如[aeiou]允许使用元音。您的变量也按相反的顺序排列,首先是模式,然后是要匹配的字符串。尝试这个:

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

附加说明,这是区分大小写的,因此Be不匹配be。如果您传入的值将具有特殊字符,preg_quote则应使用函数preg_quote($variable, '~')。您可能还想连接变量,因此很明显这是一个变量,而不是正则表达式的一部分。的$在正则表达式表示字符串的结束。