【问题标题】:How can i show x amount of digits in php?如何在 php 中显示 x 位数?
【发布时间】:2021-09-26 06:43:16
【问题描述】:

我有这个密码表格和 RFID 卡 ccffff10320d011899540002692a000002692ab7

我有一个 php 系统,我只需要显示 14、15、16、17、18、19 位 (189954) 有办法吗? 6 位数字已经存储在我的数据库中,因此系统所做的就是如果数字匹配会为您提供帮助。

【问题讨论】:

  • 您可以使用str_split将字符串拆分为一个数组,然后使用for循环从14开始到19结束,根据索引为14的数组连接输出字符串, 15、16 等
  • 你已经尝试过做什么?请按照此创建一个最小示例来帮助重现问题stackoverflow.com/help/minimal-reproducible-example

标签: php rfid


【解决方案1】:

使用substr()


$rfid = "ccffff10320d011899540002692a000002692ab7";

$a = substr($rfid, 14, 6); //189954

演示:https://3v4l.org/nEjSs

【讨论】:

  • 非常感谢,我会试试看
  • 我试试这个它是空白的,做错了什么??
  • @esteban 这是两行代码。我无法想象你做错了什么。我添加了一个演示链接。
【解决方案2】:

你可以得到你想要的值,使用我为你写的模式。

如果你想得到 6 位数字:

preg_match('/([0-9a-z]{14})([0-9]{6})([0-9a-z]{20})/', $input_line, $output_array);

输出:

array(4
0   =>  ccffff10320d011899540002692a000002692ab7
1   =>  ccffff10320d01
2   =>  189954
3   =>  0002692a000002692ab7
)

【讨论】:

  • 对于这个简单的要求,正则表达式似乎不必要地复杂。
  • 还可以检查输入号码的正确性。 ccffff10320d01<77>99540002692a000002692ab7 想想这个数字应该以 14,15,16,17,18,19 开头
  • 问题不要求任何验证。我认为您对它的了解比那里更多。
  • 我认为您误解了要求。 OP 正在查找的子字符串不应以数字 14、15、16、17、18 或 19 开头,而是 OP 正在查找位置 14-19 的字符。
  • 天哪!我误解了要求:/对不起。我改变答案。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 2011-07-06
相关资源
最近更新 更多