php - 正则表达式:去除非字母数字或标点符号

标签 php regex string

如何使用 PHP 去除所有非字母、数字、空格或标点符号的字符?

我尝试了以下方法,但它会删除标点符号。

preg_replace("/[^a-zA-Z0-9\s]/", "", $str);

最佳答案

preg_replace("/[^a-zA-Z0-9\s\p{P}]/", "", $str);

例子:

php > echo preg_replace("/[^a-zA-Z0-9\s\p{P}]/", "", "⟺f✆oo☃. ba⟗r!");
foo. bar!

\p{P} 匹配所有 Unicode 标点字符(参见 Unicode character properties)。如果您只想允许特定的标点符号,只需将它们添加到否定字符类。例如:

preg_replace("/[^a-zA-Z0-9\s.?!]/", "", $str);

关于php - 正则表达式:去除非字母数字或标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3050352/

相关文章:

python - 如何在python中输入一个大字符串?

php - 警告 : mysqli_fetch_array() error displaying SQL code

java - 将 C# 正则表达式转换为 Java 匹配器问题

java - 如何使用正则表达式并将结果分配给 Android 中的变量?

c++ - 检查 char * 类型的字符串是否包含另一个字符串

c - 我在 xcode 中遇到一些 C 问题

php - symfony什么时候调用loadUserByUsername()?

PHP:如何检查图像文件是否存在?

javascript - 单击侧边菜单导航 div 以外的按钮时如何关闭此侧边菜单导航

python - 在python中搜索无效字符的有效方法