正则表达式:去除非字母数字或标点符号
如何使用PHP去掉所有不是字母,数字,空格或标点符号的字符?
我尝试了以下方法,但它去除了标点符号。
preg_replace("/[^a-zA-Z0-9\s]/", "", $str);
如何使用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 字符属性)。如果只想允许特定的标点符号,只需将它们添加到否定字符类中即可。例如:
preg_replace("/[^a-zA-Z0-9\s.?!]/", "", $str);
你将不得不明确列出标点符号,因为没有速记(例如,是空格字符的简写)。\s
preg_replace('/[^a-zA-Z0-9\s\-=+\|!@#$%^&*()`~\[\]{};:\'",<.>\/?]/', '', $str);