2

我有一个 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);
?>
4

1 回答 1

3

该表达式不会取代它。

您只是没有正确引用您的字符串,并且$variables 正在被插值。

你的(双引号):

$bademail = "MAXCOOL$$ES$$%%T%%@%SP***AM.com";

应该是(使用引号时不插入变量):

$bademail = 'MAXCOOL$$ES$$%%T%%@%SP***AM.com';

或者您可以$使用反斜杠转义 s:

$bademail = "MAXCOOL\$\$ES\$\$%%T%%@%SP***AM.com";
于 2012-06-18T12:43:07.017 回答