如果我想在php中检查值是字符串还是int

时间:2013-01-14 08:47:09

标签: php

我有一个来自数据库的字符串值 我需要检查这个值是整数还是字符串 我尝试了is_intis_numeric,但这两个都不是我需要的。

如果值是String类型,则

is_int总是返回false,而如果我的值包含数字,则is_numeric返回true。

我使用的是preg_match('/^\d+$/',$value),在这种情况下,我正在寻找一个简单的解决方案。

3 个答案:

答案 0 :(得分:8)

$stringIsAnInteger = ctype_digit($string);

ctyped_digit()

答案 1 :(得分:1)

您可以使用ctype_digit() - 检查数字字符。检查提供的字符串text中的所有字符是否都是数字。

示例1

<?php
$strings = array('1820.20', '10002', 'wsl!12');
foreach ($strings as $testcase) {
    if (ctype_digit($testcase)) {
        echo "The string $testcase consists of all digits.\n";
    } else {
        echo "The string $testcase does not consist of all digits.\n";
    }
}
?>

以上将输出

The string 1820.20 does not consist of all digits.
The string 10002 consists of all digits.
The string wsl!12 does not consist of all digits.

示例2

<?php

$numeric_string = '42';
$integer        = 42;

ctype_digit($numeric_string);  // true
ctype_digit($integer);         // false (ASCII 42 is the * character)

is_numeric($numeric_string);   // true
is_numeric($integer);          // true
?>

答案 2 :(得分:1)

我找到了最好的方式。
我认为在一个简单的正则表达式中没有任何复杂的东西,所以,在你的位置我不会寻找更简单的。

说到复杂性,不要仅限于调用者代码 它可以像单个函数调用一样短。但是你无法确定底层的代码,这些代码可能非常复杂,而且 - 一个重要的东西 - 有一些问题,比如这里命名的每个函数都有。

虽然您自己的解决方案既简单又强大。

更新:
所有评论都说“不要使用正则表达式,其中简单的字符串函数可以用于表现等等”直接来自上个世纪。

  • 这并不意味着“即使没有任何字符串函数适合你也不要使用正则表达式”
  • 目前它是XXI,计算机速度非常快,特别是在文本解析这样简单的事情上。这样一个简单的正则表达式永远不会 成为您应用程序的瓶颈。因此,在性能优化方面,没有一个理由比regexp更喜欢字符串函数。在真实应用上,您永远不会注意到(或衡量)任何差异。