阻止在PHP中输入特殊字符作为输入

时间:2013-11-20 14:44:18

标签: php character special-characters

我如何阻止字段中使用的特殊字符?如果有人在字段中键入特殊字符,则会在旁边弹出一条消息,说明"您无法使用它。"

这是我在以下情况中显示错误的格式:

if (empty($_POST["firstname"]))
{
    $errors['firstname'] = "Please Enter Your First Name";
}
elseif(strpos($_POST['firstname'], '/') !== false)
{
    $errors['firstname'] = 'Cannot use /';
}

正如您所看到的,我为/添加了错误,但我需要为所有特殊字符添加错误。

2 个答案:

答案 0 :(得分:0)

我会使用正则表达式去除所有非法字符并将其与原始字符串进行比较。如果它们不相同,则使用非法字符。

类似的东西:

$new_value = preg_replace("/[^\w]+/", "", $value);
if ($new_value !== $value)
{
   // illegal characters were used
}

请注意,我使用的是否定字符类,在这种情况下,只允许使用单词字符并替换所有非单词字符。

答案 1 :(得分:0)

可以在正则表达式中生成无效字符列表。在下面我是“不允许”问号和正斜杠。

<?php
$_POST['firstname'] = "Sam?uel/";

if (empty($_POST["firstname"])){

    $errors['firstname'] = "Please Enter Your First Name";

}elseif(preg_match_all("/[(?\/)]/i",$_POST['firstname'],$matches)){ // list of invalid characters

    #echo '<pre>',print_r($matches),'</pre>';
    $invalid_characters = implode(",",$matches[0]);
    $errors['firstname'] = 'Cannot use '.$invalid_characters;

}