【发布时间】:2012-12-06 10:02:51
【问题描述】:
我目前正在编写一些 PHP 表单验证(我已经验证了客户端)并且有一些重复的代码,我认为这些代码可以很好地用于一个不错的 PHP 小函数。但是我无法让它工作。我确定这只是语法问题,但我无法确定。
任何帮助表示赞赏。
//Validate phone number field to ensure 8 digits, no spaces.
if(0 === preg_match("/^[0-9]{8}$/",$_POST['Phone']) {
$errors['Phone'] = "Incorrect format for 'Phone'";
}
if(!$errors) {
//Do some stuff here....
}
我发现我写了很多验证代码,我可以通过创建一个函数来节省一些时间和几行代码。
//Validate Function
function validate($regex,$index,$message) {
if(0 === preg_match($regex,$_POST[$index])) {
$errors[$index] = $message;
}
然后这样称呼它......
validate("/^[0-9]{8}$/","Phone","Incorrect format for Phone");
谁能明白为什么这不起作用?
请注意,我在处理此问题以尝试触发错误时已禁用客户端验证,因此我为“电话”发送的值无效。
【问题讨论】:
-
我相信如果包含在单引号之间,您将需要花括号让 php 评估变量索引。像这样,$_POST['{$index}']
-
@Matt:不需要。如果参数是一个字符串,它可以正常使用 $_POST[$index]
-
这不起作用的原因有很多,其中最重要的是您的示例没有任何意义。如果这是一个函数,那么你会想要返回一个值,而你不想。如果您还想将数组设置为错误消息值,则该参数必须通过引用传递给函数。
标签: php regex validation function