[英]PHP: Validation of user input using regex not working
这是我第一次尝试编写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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.