PHP表单验证:标题需支持所有字符,是删除脚本还是修改preg_match?
解决标题验证支持所有字符的问题
嘿,我来帮你搞定这个问题!根据你的需求——标题需要支持所有字符,直接删除针对标题的preg_match验证逻辑是最简洁且合理的方案,当然也可以修改正则,但修改后的正则其实没有实际验证意义,我给你详细拆解下:
为什么不推荐修改正则?
如果要让preg_match匹配所有字符,你可以用类似/^.*$/或者/.*/这样的表达式,但这本质上是匹配任何非空字符串(甚至空字符串,但你已经有empty($title)的检查了),完全起不到验证作用,反而让代码多了冗余的判断,不如直接删掉这些逻辑。
调整后的代码示例
你只需要移除所有涉及标题正则验证的分支,保留必填项检查和URL验证即可:
if (empty($author) || empty($title) || empty($year) || empty($url) || empty($keywords)) { header("Location: ../upload.php?error=emptyfields"); exit(); } else if (!filter_var($url, FILTER_VALIDATE_URL)) { header("Location: ../upload.php?error=invalidurl"); exit(); }
注意我把原来的invalidtitleurl错误改成了invalidurl,因为现在标题不再有验证,这个复合错误也就不存在了。
额外提醒
如果之后你又需要对标题做某些限制(比如禁止特定危险字符),再针对性地写正则表达式就好。但当前需求是支持所有字符,删除冗余的验证逻辑是最优选择。
内容的提问来源于stack exchange,提问作者Lifford
相关产品推荐
相关产品推荐

