Php 验证文本字段输入数组
我有两个文本字段,如果你按下加号按钮,它会用jQuery生成另外两个 对于每个集合,只有一个字段必须有一个值,即:这将通过验证:Php 验证文本字段输入数组,php,Php,我有两个文本字段,如果你按下加号按钮,它会用jQuery生成另外两个 对于每个集合,只有一个字段必须有一个值,即:这将通过验证: email number email number 但如果两个字段都为空,则验证将失败 我不知道如何做到这一点。我当前的验证要求两个字段都不能为空 foreach($this->contact_email as $email) { if(!filter_var($email, FILTER_VA
email number
email
number
但如果两个字段都为空,则验证将失败
我不知道如何做到这一点。我当前的验证要求两个字段都不能为空
foreach($this->contact_email as $email) {
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$this->errors[] = 'Invalid email address';
}
}
foreach($this->contact_number as $number) {
if(strlen($number) < 10) {
$this->errors[] = 'Contact number should be 10 characters long';
}
}
foreach($this->contact_email作为$email){
如果(!filter_var($email,filter_VALIDATE_email)){
$this->errors[]=“无效的电子邮件地址”;
}
}
foreach($this->contact_number作为$number){
如果(strlen($number)<10){
$this->errors[]=“联系人号码长度应为10个字符”;
}
}
HTML:
我想它们在一个
中,因此您可以在控制器中执行以下操作:
if(!empty($_POST['email'])){
//your code here
};
希望我已经理解了您的问题,我可以帮助您。如果您始终可以确保电子邮件和数字字段的计数相同,您可以使用如下单循环解决此问题:
foreach($this->contact_email as $index=>$email) {
$number = $this->contact_number[$index];
$validMail = filter_var($email, FILTER_VALIDATE_EMAIL);
$validNumber = strlen($number) < 10;
if ($validMail || $validNumber) {
continue;
}
if(!$validMail) {
$this->errors[] = 'Invalid email address';
}
if(!$validNumber) {
$this->errors[] = 'Contact number should be 10 characters long';
}
}
foreach($this->contact_email as$index=>$email){
$number=$this->contact_number[$index];
$validMail=filter\u var($email,filter\u VALIDATE\u email);
$validNumber=strlen($number)<10;
如果($validMail | |$validNumber){
继续;
}
如果(!$validMail){
$this->errors[]=“无效的电子邮件地址”;
}
如果(!$validNumber){
$this->errors[]=“联系人号码长度应为10个字符”;
}
}
循环其中一个字段,并使用当前循环索引/键访问另一个字段中的关联字段,然后检查这两个字段是否都为空。@04FS,如果我只循环其中一个字段,则不确定如何访问另一个字段。我想这可能是一个开始,但它只给了我电子邮件字段的键和值foreach($key=>$val){
}`现在您获得了密钥,因此您可以使用$this->contact\u number[$key]
@04FS访问另一个数组中的相应字段,我尝试了这个方法,但即使我填写了一个字段,仍然会在验证应该通过的地方出现验证错误foreach($key=>this->contact\u email as$key=>val){如果(empty($val&&empty($this->contact\u number[$key])){$this->errors[]==“至少需要一个字段”;}}
empty($val&&$this->contact\u number[$key])
是胡说八道,请自己检查这两个字段。谢谢你的代码。如果我将两个字段都留空,则不会触发验证,并插入一个空行。它应该要求每行的2个字段中至少有一个有一些输入,听起来好像在创建数据库条目之前没有检查$this->errors
的长度,因为据我所知,它应该与我提供的代码一起工作。如果这两个字段中的任何一个不是空的,它不会向errors数组中添加新字符串
foreach($this->contact_email as $index=>$email) {
$number = $this->contact_number[$index];
$validMail = filter_var($email, FILTER_VALIDATE_EMAIL);
$validNumber = strlen($number) < 10;
if ($validMail || $validNumber) {
continue;
}
if(!$validMail) {
$this->errors[] = 'Invalid email address';
}
if(!$validNumber) {
$this->errors[] = 'Contact number should be 10 characters long';
}
}