【发布时间】:2014-03-12 10:02:44
【问题描述】:
这是我第一次尝试编写 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;
}
}
?>
有人发现任何潜在问题吗?
【问题讨论】:
-
注意:$lines 是数组,你检查数组的strlen。