2011-08-12 53 views
2

我有一個字符串,它是這樣的:PHP字符串 - 使用模式字符串打入陣

$string = "Item 1|Item 2|Item 3|Item 4|Item 5" 

什麼就是通過這個字符串進行迭代並刪除重複的最佳途徑。例如,它會知道要比較的每個代碼部分都在'|'之間字符。

這將選擇項目1和preg_replace()與該項目的字符串的其餘部分。然後它會查看下一個Item(Item2)和preg_replace()該Item的其餘部分。

棘手的部分是,如果Item 1 == Item 2。然後,該算法將替換項目2,項目3將成爲下一個要查看的項目。

我已經嘗試了幾個方法,但沒有什麼工作。有任何想法嗎?謝謝!

回答

6

如果我理解正確的話,忽略你所有的東西有關preg_replace()如果你真的只是希望刪除重複,然後使用一些陣列操作。

explode()它放在|到一個數組。與array_unique()過濾並implode()它放回管道分隔字符串:

$array = explode("|", "Item 1|Item 2|Item 3|Item 4|Item 5"); 
$unique = array_unique($array); 
implode("|", $unique); 
+0

太好了!我很尷尬地表現出我是如何嘗試去做的。非常感謝! –

+0

@thepristinedesign:那麼,你在這裏做一個preg_replace? –

+0

我打算使用的preg_replace(),但爆炸-破滅方法看起來更優雅和高效。 –

4
$items = explode('|',$string); 
$unique_items = array_unique($items); 
$unique_string = implode('|', $unique_items);