Apabila bercakap tentang pengesahan, kita perlu mengetahui ungkapan biasa:
Ungkapan biasa
Ungkapan biasa ialah kaedah untuk menerangkan peraturan teks Ia bukan padanan tepat, tetapi padanan kabur melalui beberapa simbol tertentu
Dalam PHP, kami menggunakan fungsi preg_match untuk Melaksanakan tetap. padanan ungkapan. Satu parameter ialah peraturan ungkapan biasa kami dan parameter kedua ialah teks yang akan disemak
preg_match ( rentetan $biasa, rentetan $rentetan aksara[, tatasusunan & $result] )
Fungsi: Padankan $string pembolehubah berdasarkan $regular variable. Jika wujud, kembalikan bilangan padanan dan letakkan hasil yang sepadan ke dalam pembolehubah $result. Jika tiada keputusan ditemui, 0 dikembalikan.
^ bermaksud mula; $ bermaksud tamat
Mari kita lihat kod:
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 $str = 'date20150121'; if (preg_match('/^date/', $str)) { echo '匹配成功'; } else { echo '匹配失败'; } ?>
Kod di atas sepadan dengan nombor bermula dengan tarikh. Keputusan padanan adalah seperti berikut:
Matching berjaya
Parameter ketiga preg_matched dipadankan Kandungan, biasanya kami akan memasukkan tatasusunan kosong, kerana ia adalah panggilan mengikut alamat Selepas pemadanan selesai, kandungan padanan khusus
contoh . akan diperolehi dalam tatasusunan
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 $str = 'date20150121'; if (preg_match('/^date/', $str,$mat)) { print_r($mat); } else { echo '匹配失败'; } ?>
Hasil larian program:
Array ( [0] => tarikh )
Dalam ungkapan biasa, huruf diwakili oleh w dan nombor diwakili oleh d (D mewakili bukan digit
• +). mewakili satu Atau berbilang
• * bermaksud 0 atau lebih
• ? bermaksud ada atau tiada
• {n} mewakili nombor tertentu
• {m, n} mewakili lebih besar daripada m dan kurang daripada n
Seperti berikut:
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 $name = "zhang"; // wang zhu hu ma tan if (preg_match('/an|hu/', $name, $arr)) { print_r($arr); } else { echo '匹配失败'; } ?>
Hasil larian program:
Array ( [0] => )
Keadaan atau boleh digunakan untuk memadankan rentetan Jika ia hanya satu huruf atau aksara, anda boleh menggunakan perwakilan julat
Anda. boleh menggunakan [] Mewakili julat nilai aksara
'/[a0.]/' boleh memadankan mana-mana rentetan yang mengandungi a atau 0 atau .
Selain itu, ungkapan biasa juga boleh menggunakan -. untuk Mewakili set julat
• [a-z] Mewakili mana-mana satu daripada 26 huruf kecil
• [A-Z] Mewakili huruf besar
• [0-9] Mewakili nombor perpuluhan
Sekarang kita tahu begitu banyak, mari kita lihat menggunakan ungkapan biasa untuk memadankan kandungan borang.
PHP - Nama Pengesahan
Kod berikut akan mengesan sama ada medan nama mengandungi huruf dan ruang dengan cara yang mudah Jika nilai medan nama tidak sah, mesej ralat akan dikeluarkan:
$nama = test_input($_POST["nama"]);
jika (!preg_match("/^[a-zA-Z]*$/",$name) ) {
$nameErr = "Hanya huruf dan ruang dibenarkan";
}
PHP - E-mel Pengesahan
Peraturan: Nama e-mel boleh menjadi sebarang aksara yang terdiri daripada huruf, nombor, garis bawah dan titik e-mel mesti mengandungi simbol @ dan teks berikut diproses mengikut peraturan nama domain
Kod berikut akan menyemak sama ada alamat e-mel itu sah dengan cara yang mudah. Jika alamat e-mel itu menyalahi undang-undang, mesej ralat akan dikeluarkan:
$email = test_input($_POST["email"]);
if (!preg_match( "/^ [a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/",$e-mel)) {
$emailErr = "Format e-mel tidak sah!";
}
PHP - Sahkan URL
Kod berikut akan menyemak sama ada alamat URL itu sah (URL operasi ungkapan biasa berikut mengandungi sempang: "-" Jika alamat URL tidak sah, mesej ralat akan dikeluarkan:
$laman web = test_input ($_POST["laman web"]);
jika (!preg_match("/b(?:(?:https?|ftp)://|www.)[-a- z0-9+&@# /%?=~_|!:,.;]*[-a-z0-9+&@#/%
=~_|]/i",$laman web)) {
$websiteErr = "URL Tidak Sah";
}
Kami kini akan menggabungkan apa yang kami pelajari di atas untuk mengesahkan data dalam borang kami.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PHP中文网</title> </head> <style> .error {color: #FF0000;} </style> <body> <?php // 定义变量并设置为空值 $nameErr = $emailErr = $genderErr = $websiteErr = ""; $name = $email = $gender = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) { $nameErr = "姓名是必填的"; } else { $name = test_input($_POST["name"]); // 检查姓名是否包含字母和空白字符 if (!preg_match("/^[a-zA-Z ]*$/",$name)) { $nameErr = "只允许字母和空格"; } } if (empty($_POST["email"])) { $emailErr = "电邮是必填的"; } else { $email = test_input($_POST["email"]); // 检查电子邮件地址语法是否有效 if (!preg_match("/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/",$email)) { $emailErr = "无效的 email 格式"; } } if (empty($_POST["website"])) { $website = ""; } else { $website = test_input($_POST["website"]); // 检查 URL 地址语法是否有效(正则表达式也允许 URL 中的斜杠) if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) { $websiteErr = "无效的 URL"; } } if (empty($_POST["comment"])) { $comment = ""; } else { $comment = test_input($_POST["comment"]); } if (empty($_POST["gender"])) { $genderErr = "性别是必选的"; } else { $gender = test_input($_POST["gender"]); } } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> <h2>PHP 验证实例</h2> <p><span class="error">* 必需的字段</span></p> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 姓名:<input type="text" name="name"> <span class="error">* <?php echo $nameErr;?></span> <br><br> 邮箱:<input type="text" name="email"> <span class="error">* <?php echo $emailErr;?></span> <br><br> 网址:<input type="text" name="website"> <span class="error"><?php echo $websiteErr;?></span> <br><br> 评论:<textarea name="comment" rows="5" cols="40"></textarea> <br><br> 性别: <input type="radio" name="gender" value="female">女性 <input type="radio" name="gender" value="male">男性 <span class="error">* <?php echo $genderErr;?></span> <br><br> <input type="submit" name="submit" value="提交"> </form> <?php echo "<h2>您的输入:</h2>"; echo $name; echo "<br>"; echo $email; echo "<br>"; echo $website; echo "<br>"; echo $comment; echo "<br>"; echo $gender; ?> </body> </html>
Jika kami tidak mengisinya mengikut peraturan yang kami tulis di atas, gesaan berikut akan muncul:
Jika maklumat yang anda masukkan betul, ia akan lulus pengesahan
Anda juga boleh menggunakan ungkapan biasa untuk memadankan nombor telefon mudah alih nombor.