这是我的代码。
$fr = fopen("php://stdin", "r");
$input = fgets($fr);
if (preg_match('/^-?[0-9]{1,4}$/', $input)) {
echo "Integer.";
} else if (preg_match('/^[-+]?[0-9]*\.?[0-9]+$/', $input)) {
echo "Float.";
} else if (preg_match('/[a-zA-Z\s]^[0-9]/', $input)) {
echo "string.";
}
我将从输入的命令行中获取$input
变量。我需要找到变量是int,float,string的数据类型。
尝试gettype()方法,但它总是字符串。所以只能尝试使用preg_match
。
虽然在这方面我也没有得到正确的输出。
Ex:1.2e3我收到字符串
答案 0 :(得分:0)
命令行(或任何管道)的所有输入始终是字符串,因为不支持其他类型。您要弄清楚的是您的字符串是否为数字,然后将其转换为数字:
if (is_numeric($input)) {
$input = +$input;
}
一元+
运算符会将字符串解释为数字,并以int
或float
生成。