Проверка числовых полей

Часто требуется проверить, что в поле введено целое или вещественное число, а не просто строка. Одним из наиболее простых способов является преобразова­ние строки в число (при помощи функции intval или floatval для целых или вещественных чисел соответственно) и затем обратно в строку, а затем сравне­ние исходной и полученной двойным преобразованием строки. Если они совпа­дают, то исходная строка содержит корректное число. Для сравнения строк можно использовать функцию strcmp, которая возвращает ненулевое значе­ние, если заданные ей как параметры строки различны. Ниже в примере приведена подобная проверка для целых чисел.

code: #php
<HTML>
<HEAD>
<TITLE>Целочисленное поле</TITLE>
</HEAD>
<BODY>
<CENTER>
<H1>Целочисленное поле</H1>
<?php
 
$errors = array();
 
if (isset($_REQUEST["seen_already"])) {
  validate_data();
  if (count($errors)>0) {
    display_errors();
    display_form();
  } else {
    process_data();
  }
} else {
  display_form();
}
 
function validate_data() {
  global $errors;
 
  if (strcmp($_REQUEST["Number"], strval(intval($_REQUEST["Number"])))) {
    $errors[] = "<FONT COLOR='RED'>Следует ввести целое число</FONT>";
  }
}
 
function display_errors() {
  global $errors;
 
  foreach ($errors as $err) {
    echo $err,   "<BR>";
  }
}
 
function process_data() {
  echo "Целое число равно ".$_REQUEST["Number"];
}
 
function display_form() {
  echo "<FORM METHOD='POST' ACTION='phpinteger.php'>";
  echo "Введите целое число";
  echo "<BR>";
  echo "<INPUT NAME='Number'  TYPE='TEXT'>";
  echo "<BR><BR>";
  echo "<INPUT TYPE='SUBMIT' VALUE='OK'>";
  echo "<INPUT TYPE='HIDDEN' NAME='seen_already' VALUE='data'>";
  echo "</FORM>";
}
?>
</CENTER>
</BODY>
</HTML>
результат выполнения примера
Книга: PHP в примерах. Купить книгу
Автор: Стивен Хольцнер. Переводчик: С. Банников
Поделиться:

Похожие статьи: