我需要修改給定的字符串以僅包含字母數字字符,點(。)和逗號。 (。) 如果字符串包含除AZ,AZ,0-9或點之外的任何字符,就應該用逗號分隔符號代替,我使用的是這樣的:正則表達式(php) - 匹配非字母數字字符的塊
$string = "dycloro 987 stackOVERflow !|,!!friday";
$newstring = preg_replace('/[^a-zA-Z0-9\.]/', ',', $string);
這種回報,
dycloro,987,計算器,,,,,,週五
但我需要的是得到,而不是下面。
dycloro,987,計算器,週五
(請注意 「|!,!!」 在$字符串部分被替換爲一個逗號符號)。 理想情況下,我想用一個逗號替換一個不允許的字符塊。 我發現 $newstring = preg_replace('/,{2,}/', ',', $newstring);
用一個逗號代替了多個逗號符號。但是有沒有辦法以更快或更好的方式做到這一點? 如何在單個正則表達式匹配中執行此操作? 是否有任何進程時間或內存差異?這是正則表達式將運行在幾兆字節的用戶輸入,所以我很好奇它。
謝謝!
你嘗試:'$ newstring = preg_replace函數( '/ [^ A-ZA-Z0-9 \] + /', '',$字符串); ' – piotrekkr 2012-03-23 13:17:16
ruakh是對的。 RTFM! – Benubird 2012-03-23 13:17:42