猿问

在php中填写电子邮件的名称部分时如何过滤掉数组创建的特殊字符

我已经构建了一个电子邮件应用程序(?),并且我希望在用户提交表单时过滤掉特殊字符(例如!@£$%^)。


这是我到目前为止所做的:


<?php


$name = $_POST['name'];


$to = "hm_087@hotmail.com";

$subject = "Test";

$message  = $name;


$invalid= array("@","!","#");


if (($_POST['name'])!== $invalid[0]){

    mail($to, $subject, $message);

    echo 'Message sent';

} else {

    echo 'Invalid character entered';

}


?>

正如您所看到的,我创建了一个数组来执行此操作,但我仅限于过滤掉一个特殊字符(即@字符)。有什么方法可以从数组中选择要过滤掉的所有字符?


aluckdog
浏览 95回答 1
1回答

波斯汪

您只需使用正则表达式即可进行字符匹配。if (!preg_match('/[!@£$%^]/', $name)) {&nbsp; &nbsp; mail($to, $subject, $message);&nbsp; &nbsp; echo 'Message sent';} else {&nbsp; &nbsp; echo 'Invalid character entered';}!@£$%^这里它正在检查您在问题中特别提到的字符,但是“我希望过滤掉特殊字符”有点含糊,我怀疑您的意思是在其中包含更多字符。如果您可以更具体地说明您想要允许哪些字符,我们可以改进正则表达式。
随时随地看视频慕课网APP
我要回答