[英]Using foreach for displaying multiple emails from a serialized data to array
[英]Verifying multiple emails from array
我有一個疑問,我不太確定如何使它工作
我有一個表單,最終用戶可以使用jquery添加多個電子郵件字段,並將每個文本輸入放入數組中
我創建了一些代碼來驗證每個數組鍵,並用數字填充數組以進行驗證
這是驗證POST的代碼:
// Collect and verify attached email
if(isset($_POST["email"])){
// set var for collecting email and store as null
$emailfields ="";
// start verify loop
foreach($_POST["email"] as $key => $email)
{
// Filter var email to comfirm it is an email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false)
{
$emailcheckarray[] = 1;
} else {
$emailcheckarray[] = 0;
}
// Create a string for later
$emailfields .= $email .",";
}
// Verify Array contains value
if (!in_array('1', $emailcheckarray, true))
{
$emailverification = 1;
} else {
$emailverification = 0;
}
}
echo $emailfields;
echo $emailverification;
現在這可以正常工作,如果電子郵件有效取決於用戶使用多少輸入,它將用$ 1 1 1 1 1 1填充$ emailcheckarray數組。
有沒有一種方法可以讓in_array僅在所有鍵與當前鍵相同的情況下工作,如果其中一個鍵為0,如果用戶輸入1個有效電子郵件,其余的無效,則仍然輸出$ emailverification為1,而我需要時其余部分無效為0。
如果在任何檢查失敗的循環過程中將驗證設置為0,則可以省略in_array
。 因此,從1開始,因為您還沒有失敗:
$emailverification = 1; // added
// start verify loop
foreach($_POST["email"] as $key => $email)
{
// Filter var email to comfirm it is an email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
if (filter_var($email, FILTER_VALIDATE_EMAIL) !== false)
{
$emailcheckarray[] = 1;
} else {
$emailcheckarray[] = 0;
$emailverification = 0; // added
}
// Create a string for later
$emailfields .= $email .",";
}
...,然后在循環結束時您具有正確的值。
您可以使用諸如array_map
和array_filter
函數來獲取所有有效電子郵件的數組。
if (isset($_POST['email'])) {
$sanitized_emails = array_map(function ($email) {
return filter_var($email, FILTER_SANITIZE_EMAIL);
}, $_POST['email']);
$valid_emails = array_filter($sanitized_emails, function($email) {
return filter_var($email, FILTER_VALIDATE_EMAIL);
});
$emailfields = implode(',', $sanitized_emails);
}
然后,您只需要比較兩個選項卡的大小即可。
$emailverification = 0;
if (count($emails) == count($valid_emails)) {
$emailverification = 1;
}
檢查肯定值是否為零:
if (in_array('0', $emailcheckarray, true)) {
$emailverification = 0;
} else {
$emailverification = 1;
}
如果沒有零,則表示它們都是零。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.