PHP:使用正则表达式不起作用验证用户输入

这是我第一次尝试编写一个php正则表达式。 我现在卡住了,即使我读了28.925条正则表达式线程,但我无法想出解决方案。 我真的很感激有经验的开发人员的一些暗示。

场景:

用户需要在网站上填写一个表格(form.php)。 点击提交按钮后,过滤器函数被调用,并且应该使用正则表达式来验证字符串以过滤不需要的字符。 如果失败,它应该给出错误并中止。

问题:

点击提交后,即使输入内容类似§$%,也会提交所有内容。 所以没有被过滤。 至于为什么我无能为力。

我的代码:

    <?php
    $pattern =  "/^[a-zA-Z0-9]+$/";

    function filter() {
    $val = $_POST['nameoftextarea'];
    $lines = preg_split($pattern, $val);

    for($i = 0;$i < strlen($lines); $i++) { 
    if (preg_match($pattern, $lines[$i])) {
    echo ('<p>Please delete these characters: ' . $lines[$i] . ' and try again.</p>');
        return false;
            }
    return true;
        }
    }
    ?>

任何人发现任何潜在的问题?


看来你已经忘记了! 否定if条件中的preg_match。

但是,有一个更简单的方法来做到这一点:

function filter($str) {
    if (preg_match_all('~[^a-zA-Z0-9]~', $str, $matches)) {
        echo '<p>Please delete these characters: '
             . implode(',', array_unique($matches[0])) . ' and try again.</p>';
        return false;
    } else return true;
}

$boolres = filter ($_POST['nameoftextarea']);

注意:一个好主意是检查字段并在客户端显示警告(HTML5正则表达式,Javascript),并在服务器端(PHP)中控制内容,

链接地址: http://www.djcxy.com/p/92705.html

上一篇: PHP: Validation of user input using regex not working

下一篇: Passing Special Characters to PHP via AJAX