2016-02-01 100 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