2016-02-01 137 views
1

是否有一個PHP函數可以執行通配符過濾和布爾AND/OR過濾?是否有一個PHP通配符布爾過濾器函數

$source = "My dog has fleas"; 
$filter = "*fleas OR Your*"; 
echo "Result: ".WildcardBooleanSearch($source, $filter); 

結果應該是真或假。在這個例子中它應該是真實的。 我搜索了網頁,發現通配符過濾,發現布爾過濾,但我沒有在一箇中找到。

fnmatch($ filter,$ source)處理通配符,但不知道AND和OR的意思。與preg_match相同的限制。 我不能簡單爆炸('或',$過濾器),因爲可能是嵌套OR和AND的。

我能想到的最貼切的比喻VBA函數Application.BuildCriteria

+3

正則表達式 –

回答

0

使用PHP的preg_match功能。如果你使用簡單的字符串搜索,你也可以使用strpos。這裏有一個例子:

$source="My dog has fleas"; 
$filter="fleas or your"; 
if (strpos($source,$filter)) { 
    echo "Found the match"; 
} 

你可以使用preg_match做更復雜的匹配。

+0

沒有將無法工作。 $ filter中的單詞'or'是一個布爾OR,而不是純英文'or'。 – VolleyballAddictSandiego

+1

那麼,你是對的...這不會與布爾或。你最好使用preg_match,在那裏你可以使用正則表達式來匹配幾乎任何東西。 – LuvnJesus

0

或:

echo "Result: " . preg_match("/(fleas|Your)/", $source); 

和:

echo "Result: " . (preg_match("/fleas/", $source) && preg_match("/Your/", $source)); 
+0

沒有,這將無法正常工作。結果必須使用WildcardBooleanSearch($ source,$ filter)形式的函數調用來計算; – VolleyballAddictSandiego

+1

好吧,這只是你如何在你的函數中實現這些preg_matches的問題。你可以在那裏添加更多的搜索模式,或者就這樣離開它。 – PetrHejda