is_numeric veya sayısal preg_match?

5 Cevap php

Ben tamamen güven is_numeric(). Bu bir izin onaltılık olan örneğin "0xFF" aracılığıyla sağlayan edemez bir forum okumak ...

Yani benim soru kandırmak olduğunu is_numeric? Ben bunu doğru yapmak için bir regex kullanmak gerekir?

5 Cevap

İşte is_numeric() sayısal bir dize olması ne düşünüyor:

Sayısal dizeleri isteğe bağlı bir işaret, numaraların herhangi isteğe bağlı ondalık kısmı ve isteğe bağlı üstel bir parçası. Böylece 0.123,45 e6 geçerli bir sayısal değerdir. Onaltılık gösterimde (0xFF) izin de ancak işareti, ondalık ve üstel parçası olmadan.

Eğer sadece bir dize ondalık basamak 0-9 oluşmaktadır olmadığını kontrol etmek istiyorsanız, kullanabilirsiniz ctype_digit().

Regex belli ancak bir yük ile geliyor, sizin daha iyi bir seçenek olacaktır. Yani gerçekten durumunuza bağlıdır ve ne yapmak istediğinizi.

Kullanıcı girişi doğrulamak için mi? Daha sonra regexpi kullanılarak ya da iddia havai bir "x" ve is_numeric () çok genel olmaz içermez.

Eğer sadece bir şey bir tamsayı olduğunu kontrol etmek istiyorsanız, bu deneyin:

function isInteger($value){
    return (is_numeric($value) ? intval($value) == $value : false);
}

Eğer yüzen kontrol etmek istiyorsanız, çok sonra bu tabii ki işe yaramaz :)