English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

경험 노트

온라인 도구

PHP 기본 강의

PHP 고급 강의

PHP 필터

PHP 클래스

Object 함수

사용자 입력을 정리하고 검증하다

데이터를 검증하려면 필터 확장을 사용하여 PHP의 filter_var() 기능을 사용해야 합니다. 기본 문법은 다음과 같습니다:

filter_var(variable, filter, options)

이 함수는 세 가지 매개변수를 가지고 있으며, 마지막 두 가지 매개변수는 선택 사항입니다. 첫 번째 매개변수는 필터링할 값, 두 번째 매개변수는 적용할 필터의 ID, 세 번째 매개변수는 필터와 관련된 옵션 배열입니다. 그 작동 방식을 보겠습니다.

문자열 정리

아래 예제에서는 문자열에서 모든 HTML 태그를 제거하여 문자열을 정리할 것입니다:

<?php
//사용자注释 예제
$comment = "<h1>혹시 오늘은 잘 지내셨나요?</h1>";
 
//문자열을 정리하고 출력하다
$sanitizedComment = filter_var($comment, FILTER_SANITIZE_STRING);
echo $sanitizedComment;
?>
테스트를 보세요‹/›

위 예제의 출력은 다음과 같습니다:

혹시 오늘은 잘 지내셨나요?

인증하는 정수 값

아래 예제에서는 이 값이 유효한 정수인지 확인할 것입니다.

<?php
// 예제 정수 값
$int = 20;
 
// 인증하는 정수 값
if(filter_var($int, FILTER_VALIDATE_INT)){
    echo "<b>$int</b>이는 유효한 정수입니다";
} else{
    echo "<b>$int</b>이는 유효한 정수가 아닙니다";
}
?>
테스트를 보세요‹/›

위의 예제에서 \$int 변수를 0으로 설정하면 예제 코드는 무효한 정수 메시지를 표시합니다. 이 문제를 해결하려면 다음과 같이 값을 명시적으로 테스트해야 합니다:

<?php
//예제 정수 값
\$int = 0;
 
// Validate sample integer value
if(filter_var(\$int, FILTER_VALIDATE_INT) === 0 || filter_var(\$int, FILTER_VALIDATE_INT)){
    echo "The <b>\$int</b>이는 유효한 정수입니다";
} else{
    echo "The <b>\$int</b>이는 유효한 정수가 아닙니다";
}
?>
테스트를 보세요‹/›

IP 주소��证

아래의 예제에서 값을 유효한 IP 주소인지 확인합니다.

<?php
// IP 주소
\$ip = "172.16.254.1";
 
// IP 주소��证 예제
if(filter_var(\$ip, FILTER_VALIDATE_IP)){
    echo "<b>\$ip</b>이는 유효한 IP 주소입니다";
} else {
    echo "<b>\$ip</b>이는 유효한 IP 주소가 아닙니다";
}
?>
테스트를 보세요‹/›

FILTER_FLAG_IPV를 사용하여 별도로 사용할 수 있습니다4FILTER_FLAG_IPV를 사용하여 별도로 사용할 수 있습니다6또는FILTER_FLAG_IPV4또는 IPV6 IP 주소는��证이 적용됩니다. 다음은 예제입니다:

<?php
// IP 주소
\$ip = "172.16.254.1";
 
// IP 주소��证 예제
if(filter_var(\$ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
    echo "<b>\$ip</b>이는 유효한 IPV입니다6주소";
} else {
    echo "<b>\$ip</b>이는 유효한 IPV 아닙니다6주소";
}
?>
테스트를 보세요‹/›

이메일 주소 정리 및 확인

아래의 예제에서 이메일 주소를 정리하고 확인하는 방법을 보여드립니다.

<?php
// 이메일 주소
\$email = "someone@@example.com";
 
//이메일에서 모든 불법 문자를 제거합니다
\$sanitizedEmail = filter_var(\$email, FILTER_SANITIZE_EMAIL);
 
//이메일 주소��证
if(\$email == \$sanitizedEmail && filter_var(\$email, FILTER_VALIDATE_EMAIL)){
    echo "\$email 은(는) 유효한 이메일 주소입니다";
} else{
    echo "\$email 은(는) 유효한 이메일 주소가 아닙니다";
}
?>
테스트를 보세요‹/›

주의:FILTER_SANITIZE_EMAIL 필터는 문자, 숫자와 제공된 이메일 주소 문자열을 제외한 모든 무효 문자를 제거합니다!#$%&'*+-=?^_`{|}~@.[]。

URL 정리 및 검증

다음 예제는 URL을 정리하고 검증하는 방법을 보여줍니다.

<?php
//  url 예제
$url = "http:://www.example.com"
 
//주소에서 모든 불법 문자를 제거
$sanitizedUrl = filter_var($url, FILTER_SANITIZE_URL);
 
// 웹사이트 URL을 검증
if($url == $sanitizedUrl && filter_var($url, FILTER_VALIDATE_URL)){
    echo "$url은(는) 유효한 웹사이트 주소입니다";
} else{
    echo "$url은(는) 유효한 웹사이트 주소가 아닙니다";
}
?>
테스트를 보세요‹/›

주의:FILTER_SANITIZE_URL 필터는 문자, 숫자 및 제공된 URL 문자열에서 모든 무효 문자를 제거합니다$-_.+!*(),{}|\\^~[]`<>#%";/?:@&=。

여기서 flag를 사용하여 URL이 쿼리 문자열을 포함하는지 확인할 수 있습니다 FILTER_FLAG_QUERY_REQUIRED, 예를 들어 다음 예제와 같이:

<?php
//url
$url = "http://www.example.com?topic=filters";
 
//쿼리 문자열을 얻기 위해 웹사이트 주소를 검증
if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)){
    echo "<b>$url</b> 쿼리 문자열을 포함합니다";
} else{
    echo "<b>$url</b> 쿼리 문자열을 포함하지 않습니다";
}
?>
테스트를 보세요‹/›

참조하십시오HTML URL튜토리얼을 참조하여URL의 다른 구성 요소를 검증합니다.

범위 내 정수를 검증

다음 예제는 제공된 값이 정수인지 여부와 그가 0에서100의 범위 내.

<?php
// 예제 정수 값
$int = 75;
 
//샘플 정수 값을 검증
if(filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range" => 0,"max_range" => 100)))){
    echo "<b>$int</b> 0에서100의 범위 내";
} else{
    echo "<b>$int</b> 0에서100의 범위 내";
}
?>
테스트를 보세요‹/›