我有以下函数来执行模式"exact match"
的{{1}}
用句子($searchPat)
($sourceStr)
然而,这并没有完全匹配。我改变了如下功能,但这甚至都没有执行。
function isUsed($sourceStr, $searchPat) {
if (strpos($sourceStr, $searchPat) !== false) {
return true;
} else {
return false;
}
}
我怎么能完全匹配?
答案 0 :(得分:4)
[]
是一个字符类。这会列出您要允许的字符,例如[aeiou]
将允许元音。您的变量也是颠倒顺序,首先是模式,然后是匹配的字符串。试试这个:
function isUsed($sourceStr, $searchPat) {
if (preg_match("~\b$searchPat\b~", $sourceStr)) {
return true;
} else {
return false;
}
}
其他说明,区分大小写,因此Be
不匹配be
。如果您传入的值将包含特殊字符,则应使用preg_quote
函数preg_quote($variable, '~')
。您也可能想要连接变量,因此很明显这是一个变量而不是正则表达式的一部分。正则表达式中的$
表示字符串的结尾。
答案 1 :(得分:0)
试试这个。
function isUsed($sourceStr, $searchPat) {
if (preg_match("/\b".preg_quote($sourceStr)."\b/i", $searchPat)) {
return true;
} else {
return false;
}
}
答案 2 :(得分:0)
请尝试" 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";
答案 3 :(得分:0)
你可以尝试这个:
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'