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

时间:2016-02-09 05:19:59

标签: php regex preg-match

我有以下函数来执行模式"exact match"的{​​{1}} 用句子($searchPat)

($sourceStr)

然而,这并没有完全匹配。我改变了如下功能,但这甚至都没有执行。

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

我怎么能完全匹配?

4 个答案:

答案 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'