PHP—包含0';在左边

PHP—包含0';在左边,php,Php,我试图通过长度验证一个数字。此数字必须有4位数字才能通过验证。问题是当这个数字左边有0时,比如0035 现在我在这里: echo (strlen ((string) 0025 )); 总共是2,但我想把左边的0数出来,所以总共是4。 很明显,整数到字符串的转换不起作用,我该怎么做?你不能这样做,左零表示数字是,你可以用它来做 例如: echo strlen(sprintf("%04d", 25)); 现场测试: 答复: 我不想将0添加到数字中,我想检测 数字有0。如果收到的号码是25,则

我试图通过长度验证一个数字。此数字必须有4位数字才能通过验证。问题是当这个数字左边有0时,比如0035

现在我在这里:

echo (strlen ((string) 0025  ));
总共是2,但我想把左边的0数出来,所以总共是4。
很明显,整数到字符串的转换不起作用,我该怎么做?

你不能这样做,左零表示数字是,你可以用它来做

例如:

echo strlen(sprintf("%04d", 25));
现场测试:

答复:
我不想将0添加到数字中,我想检测 数字有0。如果收到的号码是25,则该号码无效。 如果是0025,则有效。我只想验证数字 有4位数字里贝罗酒店

Cláudio,数字有无限个左零,虽然用户显式键入2或3个左零,但有更多隐藏的左零,这是一个数学基础,这就是为什么如果收到
整数
变量,就无法知道用户键入了多少左零。如果变量的大小不变,并且您想知道它还有多少个剩余零,则可以执行以下操作:

<?php
$int = 25;

echo  4 - strlen($int);

现场测试:

您不能这样做,左零表示数字为,您可以使用

例如:

echo strlen(sprintf("%04d", 25));
现场测试:

答复:
我不想将0添加到数字中,我想检测 数字有0。如果收到的号码是25,则该号码无效。 如果是0025,则有效。我只想验证数字 有4位数字里贝罗酒店

Cláudio,数字有无限个左零,虽然用户显式键入2或3个左零,但有更多隐藏的左零,这是一个数学基础,这就是为什么如果收到
整数
变量,就无法知道用户键入了多少左零。如果变量的大小不变,并且您想知道它还有多少个剩余零,则可以执行以下操作:

<?php
$int = 25;

echo  4 - strlen($int);
现场测试:

应该有效:

$str = "0025";
if( is_numeric($str) && strlen($str) == 4)
{
    echo "pass";
}
这应该是可行的:

$str = "0025";
if( is_numeric($str) && strlen($str) == 4)
{
    echo "pass";
}
如果它是一个数字,而不是字符串,则该数字没有数字。它有价值。您可以将该值格式化为一个带有4位数字的字符串,该字符串用0填充。但是验证一个数字是否有4位数字是毫无意义的,因为数字值没有格式。当您将该值格式化为以10为基数的数字时,该值仅变为“4位数”。在此之前,该值可以用多种基数表示,并且所有基数中的“位数”都不同

您可以将数字格式化为0填充的4位字符串,也可以检查该值是否介于0和9999之间(如果必须精确为“4位”,则为1000和9999)

如果(0如果它是一个数字,而不是字符串,则该数字没有数字。它有一个值。您可以将该值格式化为一个带有4位数字的字符串,并用0填充。但要验证一个数字是否有4位数字是无意义的,因为该数字值没有格式。该值只会变成“4位”当您将其格式化为以10为基数的数字时。在此之前,该值是一个可以用多种基数表示的值,并且所有基数中的“位数”都不同

您可以将数字格式化为0填充的4位字符串,也可以检查该值是否介于0和9999之间(如果必须精确为“4位”,则为1000和9999)


if(0)您的问题是您有一个整数文本
0025
。PHP在将其转换为字符串之前删除前导零。
strlen('0025'))
将产生
4
。数字是作为整数而不是字符串接收的。我需要知道数字的长度。我将其转换为字符串,以便可以使用strlen,但它不起作用。如何获取输入?如果是通过HTTP Post,则它是一个字符串,并在某个时候将其转换为整数。事实上,您的WSDL设计是什么如果您需要一个4位数的数字,如果必须采用这种格式,字符串将是表示信息的更好方式。如果任何4位数有效,为什么不检查数字是否介于
9999
0
之间。将其格式化以供显示比另一项任务更重要。您甚至可以使用字符串模式来n强制具有所需格式的字符串。您的问题是您有一个整数文本
0025
。PHP在将其强制转换为字符串之前删除前导零。
strlen('0025'))
将产生
4
。数字是作为整数而不是字符串接收的。我需要知道数字的长度。我将其转换为字符串,以便可以使用strlen,但它不起作用。如何获取输入?如果是通过HTTP Post,则它是一个字符串,并在某个时候将其转换为整数。事实上,您的WSDL设计是什么如果您需要一个4位数的数字,如果必须采用这种格式,字符串将是表示信息的更好方式。如果任何4位数有效,为什么不检查数字是否介于
9999
0
之间。将其格式化以供显示比另一项任务更重要。您甚至可以使用字符串模式来n强制一个具有所需格式的字符串。我不想将0添加到数字中,我想检测该数字是否有0。如果收到的数字是25,则该数字无效。如果是0025,则该数字有效。我只想验证具有4位数字的数字。谢谢,我现在更好地理解了这个问题。我不想将0添加到数字中,我想检测数字是否有0。如果收到的数字是25,则该数字无效。如果是0025,则该数字有效。我只想验证具有4位数字的数字。谢谢,我现在更好地理解了这个问题。感谢您的解释,我现在更好地理解了它。不过,我手中还有一个问题。客户要求你的工作就是告诉客户什么时候他想要的东西是不可能的,或者说