我需要修改给定的字符串,使其仅包含字母数字字符、句点(.)和逗号。如果字符串包含a-z、a-z、0-9或句点(.)以外的任何字符,则应将它们替换为逗号,我使用的是:
$string = "dycloro 987 stackOVERflow !|,!!friday";
$newstring = preg_replace('/[^a-zA-Z0-9'.]/', ',', $string);
此返回,
dycloro,987,stackOVERflow,,,,friday
但我需要得到以下内容。
dycloro,987,stackOVERflow,周五
(请注意,$string中的"!|,!!"部分已替换为单个逗号符号)。理想情况下,我想用一个逗号符号替换一个不允许使用的字符块。我发现了$newstring = preg_replace('/,{2,}/', ',', $newstring);
将多个逗号符号替换为一个逗号。但是,有什么方法可以更快或更好地做到这一点吗?如何在单个正则表达式匹配中执行此操作?它们之间是否存在处理时间或内存差异?这是正则表达式将在几兆字节的用户输入下运行,所以我也很好奇。
谢谢!
只需在字符类后面添加一个加号+
,意思是"我刚才提到的一个或多个内容"
$string = "dycloro 987 stackOVERflow !|,!!friday";
$newstring = preg_replace('/[^a-zA-Z0-9'.]+/', ',', $string);
请参阅http://www.php.net/manual/en/regexp.reference.repetition.php.
试试这个
$newstring = preg_replace('/[^a-zA-Z0-9'.]+/', ',', $string);