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