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

ttm*_*tmt 0 php regex

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

$page_title = preg_replace("/[^A-Za-z0-9 ]/", "", $page_title);
Run Code Online (Sandbox Code Playgroud)

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

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

Jay*_*ard 9

如果您只想留下所有字母数字位,您可以使用:

(\W)+
Run Code Online (Sandbox Code Playgroud)

这是一些测试代码:

$original = "Match spaces and {!}#";
echo $original ."<br>";

$altered = preg_replace("/(\W)+/", "", $original);
echo $altered;
Run Code Online (Sandbox Code Playgroud)

这是输出:

匹配空格和{!}#

Matchspacesand

这是解释:

第一个捕获组:(\W)匹配任何非单词字符[^ a-zA-Z0-9_]
量词:+在一次和无限次之间,尽可能多次,根据需要返回[贪心]