2016-02-09 57 views
2

我有以下功能做一個模式($searchPat)"exact match"在一個句子($sourceStr)PHP - 精確匹配字符串中的句子

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; 
    } 
} 

我怎麼能這樣做完全匹配嗎?

+2

取出'[]',列出允許的字符。 '$ sourceStr'是要搜索的句子還是要查找的詞語? – chris85

+0

你好Chris - 謝謝。你的理解是正確的。 '$ sourceStr'是要搜索的句子,'$ searchPat'是要搜索的項目。 – usert4jju7

+0

你也可以使用stripos()。 –

回答

3

[]是一個字符類。列出您想要允許的字符,例如[aeiou]將允許元音。你的變量也是以倒序排列的,首先是模式,然後是匹配的字符串。試試這個:

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

其他注意事項,這是區分大小寫的,所以Be將不匹配be。如果您傳入的值將具有特殊字符,則應使用preg_quote函數,preg_quote($variable, '~')。你也可能想連接變量,所以很明顯這是一個變量,而不是正則表達式的一部分。正則表達式中的$表示字符串的結尾。

+0

謝謝你堆克里斯。 – usert4jju7

0

試試這個。

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

謝謝Ahmed – usert4jju7

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"; 
+0

謝謝Jalpa。感謝您的時間和幫助 – usert4jju7

+0

@ usert4jju7你是歡迎來:) – Jalpa

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 /我」,$ source_String)
Boundry條件:的preg_match( 「/ \ B $ string_to_search \ B/I」,$ source_String)
特別字符:如果您的字符串中有任何特殊字符用於替換「\ special_character」

+0

謝謝Sahil。感謝您的幫助 – usert4jju7

+0

@ usert4jju7歡迎.. :) –