2015-06-28 83 views
4

的最後,我有這樣的PHP正則表達式帶逗號和空格從開始和字符串

", One " 
", One , Two" 
"One, Two " 
" One,Two, " 
" ,Two ,Three " 

EDIT 2一些字符串:一些字符串有昏迷之間兩個字像", Two ,Three, Twenty Five, Six"

,需要在字符串的開頭和結尾刪除空間或逗號只嘗試少量的正則表達式與的preg_replace(),但他們全部替換。

編輯:實際上將是巨大的,除去所有的混亂像[email protected]#$%^&*(等無論是在結束和字符串的開始,而不是在兩者之間。




可選需要做字符串看起來正確放置然後逗號然後空間然後另一個詞(如果有一個逗號在字與字之間)。

示例"One,Two ,Three , Four"分成"One, Two, Three, Four"

P.S.請將其解釋爲兩個單獨的正則表達式,因爲它更易於理解。

+0

'/ ^(\,| \ S)+ |(\,| \ S )+ $/g' – adeneo

+0

這不是PHP正則表達式不起作用 –

回答

3

使用正則表達式\b\w+\b提取單詞和然後重新格式化這樣的:

<?php 

$strings = [", One ", 
    ", One , Two", 
    "One, Two ", 
    " One,Two, ", 
    " ,Two ,Three ", 
    ", Two ,Three, Twenty Five, Six"]; 
foreach($strings as &$str) 
{ 
    preg_match_all('/\b[\w\s]+\b/',$str,$matches); 
    $neat = ''; 
    foreach($matches[0] as $word) 
    { 
     $neat .= $word.', '; 
    } 
    $neat = rtrim($neat,', '); 
    $str = $neat; 
} 
print_r($strings); 

?> 

輸出:

Array 
(
    [0] => One 
    [1] => One, Two 
    [2] => One, Two 
    [3] => One, Two 
    [4] => Two, Three 
    [5] => Two, Three, Twenty Five, Six 
) 
+0

OP表示他有多個字符串,不是包含所有這些字符串的單個字符串,所以我創建了一個數組 –

+0

好方法,但如果有兩個單詞不起作用in string 例如',二,三,二十五,六'它返回,'二,三,二十,五,六' –

+0

@RomanToasov,這是返回什麼OP問,有什麼問題,如果是這樣應該是正確的輸出? :) –

相關問題