preg_replace删除无效字符(允许utf-8)

时间:2014-12-03 12:12:05

标签: php regex

我在导出之前使用以下函数来清理我的字符串:

function cleanString($source) {
    $source = str_replace('&', 'and', $source);
    $source = preg_replace('~[^\p{L}\p{N}]++~u', ' ', $source);
    return trim($source);
}

这很好用,但我想修改它以允许,(逗号)和括号()

目前,这就是发生的事情:

Name, Brand Name (Some & Slogan) ==> Name Brand Name Some and Slogan

如何更新上述正则表达式模式以允许逗号和括号?

我尝试了以下操作:$source = preg_replace('~[^\p{L}\p{N}]++~u\,\(\)', ' ', $source);我收到错误:Unknown modifier '\'

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以在否定字符类中加入(),

$source = preg_replace('~[^\p{L}\p{N}(),]+~u', ' ', $source);

RegEx Demo