Php 输入数字后,再输入字母';s读起来像数字

Php 输入数字后,再输入字母';s读起来像数字,php,Php,这是简单的代码 $value=($_POST['value']>0)?"number":"string"; echo $value; 当我插入像123abc这样的代码打印号码,但如果我插入像abc123这样的代码打印字符串 现在我使用了很多if语法,每次插入123abc时,它总是打印数字 如果我像这样使用它 $value=$_POST['value']*1; echo $value; 当我插入像123abc这样的东西时,这个代码打印123,但如果我插入像abc123这样的东西,这个代码

这是简单的代码

$value=($_POST['value']>0)?"number":"string";
echo $value;
当我插入像123abc这样的代码打印号码,但如果我插入像abc123这样的代码打印字符串
现在我使用了很多if语法,每次插入123abc时,它总是打印数字 如果我像这样使用它

$value=$_POST['value']*1;
echo $value;
当我插入像123abc这样的东西时,这个代码打印123,但如果我插入像abc123这样的东西,这个代码打印0


现在主要的问题是为什么代码会这样工作

有没有简单的方法来处理这个问题,并在我将它插入数据库或其他任何东西之前确定它是数字,这样做是为了检查
$\u POST['value']
是字符串还是数字,以及它是否大于0

$value=is_numeric($_POST['value']) && ($_POST['value']>0) ? "number":"string";
如果
$\u POST['value']
abc123
123abc
它将打印“字符串”,如果它只是
123
,它将打印“数字”

菲律宾政府声明:

该值由字符串的初始部分给出。如果字符串 从有效的数字数据开始,这将是使用的值。 否则,该值将为0(零)。有效的数字数据是 可选符号,后跟一个或多个数字(可选包含 小数点),后跟可选指数。指数是一个 “e”或“e”后跟一个或多个数字


这或多或少是未定义的行为,你不应该指望它。相反,请使用
is\u numeric()。疯狂,但已定义。@IgnacioVazquez Abrams,为此定义的规则在哪里?@kba:@kba更具体地说,这里是“如果字符串以有效数字数据开头,则将使用该值。否则,该值将为0”