PHP中如何获取整数的长度?
我想获取整数值的长度以在 PHP 中进行验证。 例子: 手机号码只能是 10 个整数值。不能多于10个,也不能少于10个,且不能包含字母。
我如何验证这一点?
I want to get the length of integer values for validation in PHP.
Example:
Mobile numbers should be only 10 integer values. It should not be more than 10 or less than 10 and also it should not be included of alphabetic characters.
How can I validate this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
这适用于几乎所有情况(除了零)并且可以轻松地用其他语言进行编码:
This will work for almost all cases (except zero) and easily coded in other languages:
在我看来,最好的方法是:
小数对数向上舍入等于数字的长度。
In my opinion, the best way is:
A decimal logarithm rounded up is equal to length of a number.
如果您使用的是 Web 表单,请确保将文本输入限制为仅包含 10 个字符,并添加一些辅助功能(用户不想输入错误,提交,获得有关错误的对话框,修复它,提交再次,等等)
If you are using a web form, make sure you limit the text input to only hold 10 characters as well to add some accessibility (users don't want to input it wrong, submit, get a dialog about their mistake, fix it, submit again, etc.)
在循环中使用 intval 函数,
看这个例子
Use intval function in loop,
See this example
如果您正在评估手机号码(电话号码),那么我建议不要使用 int 作为您选择的数据类型。请使用字符串,因为我无法预见您想要如何或为何使用这些数字进行数学运算。作为最佳实践,当您想要/需要进行数学运算时,请使用 int、float 等。不使用时使用字符串。
If you are evaluating mobile numbers (phone numbers) then I would recommend not using an int as your chosen data type. Use a string instead because I cannot forsee how or why you would want to do math with these numbers. As a best practice, use int, floats, etc, when you want/need to do math. Use strings when you don't.
从你的问题来看,“你想获得整数的长度,输入不会接受字母数字数据,并且整数的长度不能超过10。如果这就是你的意思;在我看来,这是最好的方法为了实现这一目标:”
From your question, "You want to get the lenght of an integer, the input will not accept alpha numeric data and the lenght of the integer cannot exceed 10. If this is what you mean; In my own opinion, this is the best way to achieve that:"
通过使用 Webmozart Assert 的断言库,我们可以使用它们的内置方法来验证输入。
integerish()
验证值是否转换为整数length()
验证字符串是否具有一定数量的字符示例
由于 Assert 类中的所有断言如果失败都会抛出
Webmozart\Assert\InvalidArgumentException
,因此我们可以捕获它并向用户传达明确的消息。示例
作为额外的,甚至可以检查该值是否不是非负整数。
示例
我希望它有帮助
By using the assertion library of Webmozart Assert we can use their build-in methods to validate the input.
integerish()
to validate that a value casts to an integerlength()
to validate that a string has a certain number of charactersExample
As all assertions in the Assert class throw an
Webmozart\Assert\InvalidArgumentException
if they fail, we can catch it and communicate a clear message to the user.Example
As an extra, it's even possible to check if the value is not a non-negative integer.
Example
I hope it helps ????
2或3步中的一点优化答案取决于我们是否允许负值
注意,最多允许负数9个数字,例如-999999999
因此,如果我们需要跳过负数,我们需要第三次比较
最后一种情况是我们想要从-1 000 000 000到1 000 000 000
用于比较
第一个使用正则表达式的 naswer
** 在 PHP 8.0.12 上测试
** XAMPP 3.3.0
** 锐龙 7 2700
** MSI Radeon RX 5700 8G
测试如下
A bit optimazed answer in 2 or 3 steps depends if we allow negative value
Note that will allow negative up to 9 numbers like -999999999
So if we need skip negatives we need 3rd comparision
Last case when we want from -1 000 000 000 to 1 000 000 000
For compare
First naswer with regex
** Tested at PHP 8.0.12
** XAMPP 3.3.0
** Ryzen 7 2700
** MSI Radeon RX 5700 8G
Tested like