2

いくつかの特別な文字を探して削除するphpスクリプト検証があります。スクリプトは正常に機能しますが、2つの$の間に何かを入れると、それも削除されます。だから入れたら

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 に答える