PHPで数値、特にスラッグで渡されたDB IDを検証する必要がありますが、正規表現を正しく取得できないようです...
必要な数をフィルタリングしないため、使用できませんis_numeric()
。同様に対処しますctype_digit()
// Values to Test
$tests = [42, '42', '42a', 'a42', '042', 1337, 0, '0', TRUE, FALSE, '1e4', 'not numeric', 9.1, '9.0', ''];
// RegEx
return !preg_match("/[^0-9]/", $val);
それはほとんど機能していますが、正規表現でも値をテストする必要があり、FALSE
両方''
とも有効として戻ってきています...
1 の有効な長さ (値ではない) を確認しようとしましreturn !preg_match("/[^0-9]{1}/", $val);
たが、正しく取得できないようです...
http://davidwalsh.name/php-validatie-numeric-digitsからサンプルとコメントをチェックアウトしましたが、サンプルコードを動作させることができません...
現在の数字のみの正規表現を知っている人はいますか?