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

时间:2012-03-21 13:46:40

标签: 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;
?>

但是,除了特殊的字符,数字也会被下划线_取代。我想在结果中包含数字。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

你的第三个模式,/[^[:alpha:]]+/正在用一个下划线替换不是一个字母。所以添加数字,例如/[^[:alpha:]0-9]+/

答案 1 :(得分:2)

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