IS_Real ()은 변수가 부동 소수점 번호인지 여부를 감지하기 위해 이전 버전에서 사용 된 PHP의 함수입니다. 기능적으로 IS_FLOAT () 또는 IS_DOUBLE () 에 해당합니다. 예를 들어:
$price = 12.99;
if (is_real($price)) {
echo "가격은 부동 소수점 번호입니다";
}
이 코드는 PHP 7.4 이전에 제대로 작동하지만 최신 PHP 버전 에서이 코드를 실행하면 더 이상 사용되지 않는 경고가 생성되고 미래 버전 에서이 기능을 완전히 제거합니다.
양식 처리 중에 사용자 제출 데이터는 일반적으로 $ _post 또는 $ _get을 통해 문자열 형식으로 수신됩니다. 문자열의 내용이 숫자 인 경우에도 문자열이 부동 소수점 유형이 아니기 때문에 IS_FLOAT () 또는 IS_REAL ()을 직접 사용 하여이 값 을 결정합니다.
이 문제를 해결하려면 일반적으로 유형 확인을 수행하기 전에 문자열을 플로팅 포인트 번호로 변환해야합니다. 예는 다음과 같습니다.
$input = $_POST['price'];
$floatVal = floatval($input);
if (is_float($floatVal)) {
echo "입력은 유효한 부동 소수점 번호입니다";
} else {
echo "올바른 부동 소수점 형식을 입력하십시오";
}
그러나이 접근법에는 잠재적 인 문제가 있습니다. floatVal ()은 문자열이 부동 소수점 번호로 변환하려고 시도하며 입력이 불법이더라도 0.0을 반환 할 수 있습니다. 따라서 더 안전한 방법은 Filter_Validate_float 와 함께 Filter_var ()를 사용하여 확인합니다.
$input = $_POST['price'];
if (filter_var($input, FILTER_VALIDATE_FLOAT) !== false) {
echo "입력은 유효한 부동 소수점 번호입니다";
} else {
echo "올바른 부동 소수점 형식을 입력하십시오";
}
이 방법은 "ABC12.34"와 같은 혼합 입력이 유효한 플로팅 포인트 수로 오인된다는 문제를 효과적으로 피할 수 있습니다.
제출 주소 https://gitbox.net/submit.php : 가격 제출 양식이 있다고 가정합니다.
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$price = $_POST['price'];
if (filter_var($price, FILTER_VALIDATE_FLOAT) !== false) {
echo "가격 제출이 성공적이었습니다,가치는입니다:" . floatval($price);
// 여기에서 데이터베이스 또는 기타 논리를 계속 작성할 수 있습니다.
} else {
echo "실수:합법적 인 부동 소수점 번호를 입력하십시오!";
}
}
?>
<form method="POST" action="https://gitbox.net/submit.php">
<label for="price">가격을 입력하십시오:</label>
<input type="text" name="price" id="price" required>
<input type="submit" value="제출하다">
</form>