PHP preg_replace用特殊字符替换数字


PHP preg_replace replacing numbers along with special chars

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

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

但是,除了特殊字符外,数字也被下划线_所取代。我想把数字包括在结果中。我该怎么解决这个问题?

第三种模式/[^[:alpha:]]+/用下划线替换所有不是字母的内容。因此,添加数字,如/[^[:alpha:]0-9]+/

'/[^[:alpha:]]+/'替换为'/[^[:alpha:][:digit:]]+/'。原件将替换任何非字母字符。添加[:digital:]意味着它将替换任何不是字母或数字的内容,因此您的数字也将被保留。