假设一个字符串:
$str = 'a_b_c';
我希望与上面的a, b, c
匹配所有可能的组合。例如:
b_a_c
进行比较时, c_a_b
,a_c_b
,true
..等将获得$str
。
注意:
$str
可能是随机的。例如:a_b
,k_l_m_n
等
答案 0 :(得分:7)
我会将你的字符串拆分成一个数组,然后将它与一个要匹配的元素数组进行比较。
$originalList = explode('_', 'a_b_c');
$matchList = array('a', 'b', 'c');
$diff = array_diff($matchList, $originalList);
if (!empty($diff)) {
// At least one of the elements in $matchList is not in $originalList
}
请注意重复的元素和不重复的元素,具体取决于数据的来源。
文档:
答案 1 :(得分:2)
没有内置的方法可以快速完成此操作。您的任务可以通过多种不同的方式完成,这些方式会因一般情况而异。你没有提到空值或检查字符串的格式,所以像这样的东西可能适用于你的目的:
function all_combos($str,$vals) {
$s=explode("_",$str);
foreach($s as $c) {
if(!in_array($s,$vals)) return false;
}
return true;
}
像all_combos("b_c_a",array("a","b","c"));