Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_replace删除无效字符(允许utf-8)_Php_Regex - Fatal编程技术网

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

Php preg_replace删除无效字符(允许utf-8),php,regex,Php,Regex,在导出之前,我使用以下函数清理字符串: function cleanString($source) { $source = str_replace('&', 'and', $source); $source = preg_replace('~[^\p{L}\p{N}]++~u', ' ', $source); return trim($source); } 这很好,但我想修改它以允许,(逗号)和括号(和) 目前正在发生的是: 名称、品牌名称(部分和标语)==>命

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

function cleanString($source) {
    $source = str_replace('&', 'and', $source);
    $source = preg_replace('~[^\p{L}\p{N}]++~u', ' ', $source);
    return trim($source);
}
这很好,但我想修改它以允许
(逗号)和括号

目前正在发生的是:

名称、品牌名称(部分和标语)
==>
命名一些品牌名称和标语

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

我尝试了以下方法:
$source=preg\u replace('~[^\p{L}\p{N}]+++u\,\(\),'''$source)我得到了错误:
未知修饰符“\”

有什么想法吗?

您可以在否定字符类中包含

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

在字符类中,不需要转义括号。@zoltamagyar括号不在字符类内。这里也不需要使用
++