我需要一个正则表达式来删除所有非字母数字和空格字符,我有这个
$page_title = preg_replace("/[^A-Za-z0-9 ]/", "", $page_title);
但它不会删除空格字符并用数字替换一些非字母数字字符。
我需要删除puntuation和空格等特殊字符。
答案 0 :(得分:9)
如果您只想留下所有字母数字位,您可以使用它:
(\W)+
以下是一些测试代码:
$original = "Match spaces and {!}#";
echo $original ."<br>";
$altered = preg_replace("/(\W)+/", "", $original);
echo $altered;
这是输出:
匹配空格和{!}#
Matchspacesand
以下是解释:
第一个捕获组:(\W)
匹配任何非单词字符[^ a-zA-Z0-9_]
量词:+在一次和无限次之间,尽可能多次,根据需要回馈[贪心]
答案 1 :(得分:2)
我需要删除puntuation和空格等特殊字符。
然后使用:
$page_title = preg_replace('/[\p{P}\p{Zs}]+/u', "", $page_title);
\p{P}
匹配任何标点字符\p{Zs}
匹配任何空格字符/u
- 支持unicode 答案 2 :(得分:2)
试试这个
preg_replace('/[^[:alnum:]]/', '', $page_title);
[:alnum:]
匹配字母数字字符
答案 3 :(得分:0)
在Sublime和PHP Regex Tester
上对我有用$page_title = preg_replace("/[^A-Za-z0-9]/", "", $page_title);