2013-01-19 35 views
0

有人可以讓我知道如何刪除多個逗號,如果他們在PHP中彼此相鄰。刪除多個逗號正則表達式

$address= rtrim(preg_replace('!\s+!', ' ', $address_line_1.' '.$address_line_2.', '.$town_village_city.', '.$state_province_county.', '.$postal_code.', '.$country),','); 
//return preg_replace('/([!?,.])+/',' ',$address); 
return preg_replace('!\,+!',' ',$address); 

例如,我可能有一個沒有town_village的地址,因此最後會有多個逗號。

還有誰測試PHP正則表達式的好資源?

+0

由於您可以以多個逗號空間組合結束,因此您需要用逗號替換「逗號(可選空格逗號)」的任何序列。在Perl中,你可以寫's /,(\ s *,)+ /,/ g'(或者更復雜,但總體效果相同,s /,(?:\ s *,)+ /,/ g',使用非捕獲括號)。 PHP的音譯可能是:'preg_replace(',(*,)+',',',$ address)'但我不確定。 –

回答

3

假設有這些逗號之間沒有空格,你可以簡單地用一個逗號替換多個逗號:(!)

$cleadAddress = preg_replace('/,+/', ',', $address); 

雖然你是一個逗號替換每個逗號,你也更換多個逗號。這取決於您的確切數據,如果更復雜的正則表達式值得努力節省一些執行時間。

0

可能是這一點,但這裏一個適當的正則表達式是我周圍的工作 - 只是逗號分隔運行的preg_replace刪除多個逗號

$cleanedAddress = str_replace(',',', ',preg_replace('/,+/', ',', $address)); 

將$地址,然後使用str_replace函數把逗號逗號空間!