2012-11-24 549 views
4

假設一個字符串:字符串匹配組合

$str = 'a_b_c';

我想a, b, c以上匹配所有可能的組合。例如:

b_a_cc_a_ba_c_b ...等將在與上述$str比較給true

注:

$str可能是隨機的。例如:a_b,k_l_m_n

回答

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 
} 

謹防重複元素的,什麼不是,這取決於你的數據是怎麼來的

文檔:

+0

非常感謝.. :) –

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