我有以下PHP代码从变量中删除特殊字符;
<?php
$name = "my%^$@#name8";
$patterns = array( '/\s+/' => '_', '/&/' => 'and', '/[^[:alpha:]]+/' => '_');
$name2 = preg_replace(array_keys($patterns), array_values($patterns), trim($name));
echo $name2;
?>
但是,除了特殊的字符,数字也会被下划线_
取代。我想在结果中包含数字。我该如何解决这个问题?
答案 0 :(得分:5)
你的第三个模式,/[^[:alpha:]]+/
正在用一个下划线替换不是一个字母。所以添加数字,例如/[^[:alpha:]0-9]+/
答案 1 :(得分:2)
将'/[^[:alpha:]]+/'
替换为'/[^[:alpha:][:digit:]]+/'
。原版正在替换任何不是字母字符的东西。添加[:digit:]意味着它将替换任何不是字母或数字的内容,因此您的数字也会被保留。