php regex从字符串中删除所有非字母数字和空格字符

时间:2016-01-14 17:12:36

标签: php regex

我需要一个正则表达式来删除所有非字母数字和空格字符,我有这个

$page_title = preg_replace("/[^A-Za-z0-9 ]/", "", $page_title);

但它不会删除空格字符并用数字替换一些非字母数字字符。

我需要删除puntuation和空格等特殊字符。

4 个答案:

答案 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);