2010-09-24 23 views
1

我不知道分割字符串的好辦法由|分隔符,如果輸入的字符串可以是下列形式:PHP的正則表達式 - 分割字符串 - 一個輸出形式

"foo, bar" 
"foo  ,bar" 
"foo,bar" 
"foo , bar" 
"foo bar" 
"foo,,bar" 

所以唯一可能的輸出字符串如下:

"foo|bar" 
"foo|bar|other|here" 

獨立於輸入字符串中有多少項。

任何想法,將不勝感激!

回答

2
preg_replace('/\s*,\s*/', '|', $string); 

這將處理與逗號的情況下,)如果您需要只用空格太一個:

preg_replace('\s*,\s*|\s+', '|', $string); 
0

像這樣的東西應該做的伎倆......

$outputstring = preg_replace_all('/\b[ ,|]+\b/','|',$inputstring); 

解釋:

\b是一個字邊界,所以它正在尋找任何公司兩個詞邊界之間的空格,逗號或管道的混合。

+0

這將匹配'FOO ,,,酒吧,,,,,foo'了。 – NikiC 2010-09-24 15:25:49

+0

@nick - true。但提問者並未指定如何處理多個逗號;實際上,我讀了他的最後一個例子,意味着忽略它們。 – Spudley 2010-09-24 15:38:07

+0

當我寫回答和評論時,這最後一個例子不在那裏。改變後你的回答顯然是正確的。 (爲什麼stackoverflow不再顯示所有的編輯?) – NikiC 2010-09-24 16:31:14

1

我會做:

$input = preg_replace('/[ ,]+/', '|', $input); 
+0

這也將允許'foo ,,,,, bar'。 – NikiC 2010-09-24 15:20:42

相關問題