您可以通過分割字符串爲 「有用」 的部分開始,隨着preg_split
裏,然後,implode
這些部件一起回來:
$str_in = "dog, cat ,car,tea pot,, ,,, ;;
fly, cake";
$parts = preg_split('/[,;\s]/', $str_in, -1, PREG_SPLIT_NO_EMPTY);
$str_out = implode(',', $parts);
var_dump($parts, $str_out);
(在這裏,正則表達式會分割爲',
',';
'和'\s
',表示任何空格字符 - 並且我們只保留非空白部分)
會得到你,爲$parts
:
array
0 => string 'dog' (length=3)
1 => string 'cat' (length=3)
2 => string 'car' (length=3)
3 => string 'tea' (length=3)
4 => string 'pot' (length=3)
5 => string 'fly' (length=3)
6 => string 'cake' (length=4)
而且,對於$str_out
:
string 'dog,cat,car,tea,pot,fly,cake' (length=28)
評論後
編輯:對不起,我沒注意一個^^
在這種情況下,你不能用空格分開:-(我可能會通過「,
」或「;
」分裂,遍歷部分,採用trim
之初,除去白色字符,每個項目的結束,只保留那些不爲空:
$useful_parts = array();
$parts = preg_split('/[,;]/', $str_in, -1, PREG_SPLIT_NO_EMPTY);
foreach ($parts as $part) {
$part = trim($part);
if (!empty($part)) {
$useful_parts[] = $part;
}
}
var_dump($useful_parts);
執行的代碼,這部分讓我:
array
0 => string 'dog' (length=3)
1 => string 'cat' (length=3)
2 => string 'car' (length=3)
3 => string 'tea pot' (length=7)
4 => string 'fly' (length=3)
5 => string 'cake' (length=4)
而爆都在一起,我得到的,此時:
string 'dog,cat,car,tea pot,fly,cake' (length=28)
哪個更好;-)
這是一個很好的答案。你如何將「茶壺」作爲最終名單上的一個項目? – 2009-12-18 19:42:11
@帕特里克:我用第二個想法編輯了我的答案 - 沒有完全注意到這種情況^^ – 2009-12-18 19:53:54
這個效果很好。比你非常。 – 2009-12-19 14:11:31