字符串组合匹配

时间:2012-11-24 05:54:19

标签: php string

假设一个字符串:

$str = 'a_b_c';

我希望与上面的a, b, c匹配所有可能的组合。例如:

与上述b_a_c进行比较时,

c_a_ba_c_btrue ..等将获得$str

注意:

$str可能是随机的。例如:a_bk_l_m_n

2 个答案:

答案 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"));

一样打电话