2012-03-21 107 views
2

我有以下PHP代码以从变量中移除特殊字符;PHP preg_replace替换数字以及特殊字符

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

但是,随着特殊字符,数字也被替换为下划线_。我想在结果中包含数字。我怎样才能解决这个问题?

回答

5

您的第三个模式/[^[:alpha:]]+/正在替换不带有下划线的字母的所有内容。所以号码加入它,就像/[^[:alpha:]0-9]+/

+0

明白了..谢谢... :) – 2012-03-21 13:51:29

2

'/[^[:alpha:][:digit:]]+/'更换'/[^[:alpha:]]+/'。原文正在取代任何不是字母字符的东西。添加[:digit:]意味着它将取代任何不是字母或数字的内容,因此您的号码也将保留。