PHP is_numeric ou preg_match 0-9 validação

Este não é um grande problema para mim (pelo que sei), é mais algo que me interessa. Mas qual é a principal diferença, se houver, de usaris_numeric sobrepreg_match (ou vice-versa) para validar os valores de entrada do usuári

Exemplo Um:

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

Exemplo Dois:

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

Presumo que ambos façam exatamente o mesmo, mas existem diferenças específicas que podem causar problemas mais tarde? Existe uma "melhor maneira" ou algo que não estou vendo que os torne diferentes.

questionAnswers(11)

yourAnswerToTheQuestion