假设一个字符串:
$str = 'a_b_c';
我想匹配上面所有可能的组合a, b, c
。例如:
b_a_c
, c_a_b
, a_c_b
..etc 将true
与上述比较时给出$str
。
笔记:
$str
可能是随机的。例如:a_b
等k_l_m_n
我会将您的字符串拆分为一个数组,然后将其与要匹配的元素数组进行比较。
$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
}
谨防重复元素和不重复元素,具体取决于数据的输入方式。
文档:
没有内置的方法可以快速做到这一点。您的任务可以通过许多不同的方式完成,它们的一般程度会有所不同。你没有提到空值或检查字符串的格式,所以这样的事情可能适合你的目的:
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"));