PHP is_numeric или preg_match 0-9 проверки - PullRequest
35 голосов
/ 04 октября 2011

Это не большая проблема для меня (насколько я знаю), это больше меня интересует.Но в чем главное отличие использования is_numeric над preg_match (или наоборот) для проверки введенных пользователем значений.

Пример первый:

<?php
    $id = $_GET['id'];
    if (!preg_match('/^[0-9]*$/', $id)) {
        // Error
    } else {
        // Continue
    }
?>

Пример два:

<?php
    $id = $_GET['id'];
    if (!is_numeric($id)) {
        // Error
    } else {
        // Continue
    }
?>

Я предполагаю, что оба делают одно и то же, но есть ли какие-то конкретные различия, которые могут как-то вызвать проблемы позже?Есть ли "лучший способ" или что-то, чего я не вижу, что отличает их от других.

Ответы [ 11 ]

0 голосов
/ 24 марта 2015

Между тем, все вышеприведенные значения будут ограничивать значения до целых, поэтому я использую

/^[1-9][0-9\.]{0,15}$/

, чтобы разрешить значения с плавающей запятой.

...