我有一个php脚本验证,它会查找一些特殊字符并删除它们。该脚本工作正常,但如果我在两个$之间放置任何东西,它也会被删除。所以,如果放入
Supercool$$$$%%email%%@%SP***AM.com; => Supercoolemail@SPAM.com
但如果我输入
Supercool$$email$$%%@%SP**AM.com => Supercool@SPAM.com
每当我在$'之间放置常规字符时,它们也会被删除。这是我用来检查输入电子邮件中的特殊字符的PHP脚本:
<?php
$bademail = "MAXCOOL$$ES$$%%T%%@%SP***AM.com";
function specialcharsreg ($email){
$regex = "/[*?$!%$&#]/";
$validemail = preg_replace($regex, "", $email);
echo "\n=====================================\n".$email." -> ".$validemail."\n=====================================\n\n";
}
specialcharsreg($bademail);
?>
答案 0 :(得分:3)
表达式不会取代它。
您只是没有正确引用字符串,而$variable
正在进行插值。
你的(双引号):
$bademail = "MAXCOOL$$ES$$%%T%%@%SP***AM.com";
应该是(使用单个引号时不插入变量):
$bademail = 'MAXCOOL$$ES$$%%T%%@%SP***AM.com';
或者你可以使用反斜杠转义$
:
$bademail = "MAXCOOL\$\$ES\$\$%%T%%@%SP***AM.com";