PHP 양식 - 확인 이메일 및 URL
검증할 때 정규식을 알아야 합니다:
정규식
정규식은 텍스트 규칙을 설명하는 방법입니다. 정확한 일치는 아니지만 특정 기호를 통한 퍼지 일치입니다.
PHP에서는 preg_match 함수를 사용합니다. 정규식 일치를 수행합니다. 하나의 매개변수는 정규식 규칙이고 두 번째 매개변수는 확인할 텍스트입니다.
preg_match ( string $regular, string $character string[, array &$result] )
기능: $regular 변수를 기준으로 $string 변수를 일치시킵니다. 존재하는 경우 일치 항목 수를 반환하고 일치된 결과를 $result 변수에 넣습니다. 결과가 없으면 0이 반환됩니다.
^은 시작을 의미하고 $는 종료를 의미합니다
코드를 살펴보겠습니다.
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 $str = 'date20150121'; if (preg_match('/^date/', $str)) { echo '匹配成功'; } else { echo '匹配失败'; } ?>
위 코드는 날짜로 시작하는 숫자와 일치합니다. 매칭 결과는 다음과 같습니다.
매칭 성공
preg_matchede의 세 번째 매개변수 일치하는 콘텐츠인 경우 일반적으로 주소별 호출이기 때문에 빈 배열을 전달합니다. 일치가 완료된 후 특정 일치 콘텐츠
인스턴스
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 $str = 'date20150121'; if (preg_match('/^date/', $str,$mat)) { print_r($mat); } else { echo '匹配失败'; } ?>
배열에서 가져옵니다. 프로그램 실행 결과:
배열 ( [0] => 날짜 )
정규 표현식에서 문자는 w로 표시되고 숫자는 d로 표시됩니다(D는 숫자가 아닌 것을 나타냄). 또는 다중을 나타냄
• * 은 0 이상을 의미
• ?는 없거나 없음을 의미
• {n} 은 특정 숫자를 나타냅니다.
• {m, n} 은 m보다 크고 n보다 작습니다.
다음과 같습니다: <?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 '匹配失败';
}
?>
프로그램 실행 결과:
Array ( [0] => )
[]를 사용할 수 있습니다. 문자의 값 범위를 나타냅니다.또는 조건을 사용하여 문자열을 일치시킬 수 있습니다. 단일 문자 또는 문자인 경우 범위 표현을 사용할 수 있습니다
'/[a0.]/'은 a, 0 또는 을 포함하는 모든 문자열과 일치할 수 있습니다.
또한 정규 표현식에서는 -를 사용할 수도 있습니다. to 범위 집합을 나타냅니다
• [a-z] 26개의 소문자 중 하나를 나타냅니다
• [A-Z] 대문자를 나타냅니다
• [0-9] 십진수 표현하기
이제 많이 알았으니, 정규식을 사용하여 형식의 내용을 일치시키는 방법을 살펴보겠습니다.
PHP - 유효성 검사 이름다음 코드는 이름 필드에 문자와 공백이 포함되어 있는지 여부를 간단한 방법으로 감지합니다. 이름 필드 값이 잘못된 경우 오류 메시지가 출력됩니다. $name = test_input($_POST["name"]); PHP - 확인 이메일 규칙: 이메일 이름은 문자, 숫자, 밑줄, 점으로 구성된 모든 문자일 수 있습니다. 이메일에는 @ 기호와 다음 텍스트가 포함되어야 합니다. 도메인 이름 규칙 다음 코드는 이메일 주소가 합법적인지 여부를 간단한 방법으로 확인합니다. 이메일 주소가 잘못된 경우 오류 메시지가 출력됩니다: $email = test_input($_POST["email"]); PHP - URL 확인 다음 코드는 URL 주소가 유효한지 확인합니다(다음 정규 표현식 작업 URL에는 대시: "-"가 포함되어 있음). URL 주소가 잘못된 경우 오류 메시지가 출력됩니다. $website = test_input ($_POST["website"]); 이제 위에서 배운 내용을 결합하여 양식의 데이터를 검증하겠습니다. 위에서 작성한 규칙에 따라 작성하지 않으면 다음 프롬프트가 나타납니다. 입력한 정보가 정확하면 인증에 통과됩니다 정규식을 사용하여 휴대폰 번호를 일치시킬 수도 있습니다. 숫자.
if (!preg_match("/^[a-zA-Z]*$/",$name) ) {
$nameErr = "문자와 공백만 허용됩니다.";
}
if (!preg_match( "/^ [a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/",$email)) {
$emailErr = "잘못된 이메일 형식!";
}
if (!preg_match("/b(?:(?:https?|ftp)://|www.)[-a- z0-9+&@# /%?=~_|!:,.;]*[-a-z0-9+&@#/%
=~_|]/i",$website)) {
$websiteErr = "잘못된 URL";
}<!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>