PHP preg_replace替换数字以及特殊字符

bla*_*d Ψ 2 php regex preg-replace php-5.3

我有以下PHP代码从变量中删除特殊字符;

<?php
$name = "my%^$@#name8";
$patterns = array( '/\s+/' => '_', '/&/' => 'and', '/[^[:alpha:]]+/' => '_');
$name2 = preg_replace(array_keys($patterns), array_values($patterns), trim($name));
echo $name2;
?>
Run Code Online (Sandbox Code Playgroud)

但是,除了特殊的字符,数字也会被下划线取代_.我想在结果中包含数字.我怎样才能解决这个问题?

Bri*_*ian 5

你的第三个模式/[^[:alpha:]]+/是用一个下划线替换那些不是字母的东西.所以添加数字,比如/[^[:alpha:]0-9]+/