【问题标题】:PHP - How do you randomize the last 4 digits of a phone numberPHP - 你如何随机化电话号码的最后 4 位数字
【发布时间】:2013-01-08 12:35:49
【问题描述】:

如何随机化电话号码的最后 4 位数字?

给定:

$phone = '000-000-0000';

结果是:

$phone = '000-000-1943';

其中 1943 是一个随机数

这可以使用 preg 之类的单行命令来完成吗...

或其他一些单行命令?

【问题讨论】:

  • @Michael Berkowski 我没有分配电话号码。它实际上用于分配一个看起来类似于电话号码的随机部件号。对于这个问题,电话号码格式是一个比较容易理解的类比。

标签: php random numbers phone-number


【解决方案1】:

substr 适合从字符串的开头/结尾提取 n 个字符; rand 可用于生成随机数,sprintf 可用于格式化数字。将所有三个函数放在一起:

$phone = '000-000-0000';
$phone = sprintf('%s%04d', substr($phone, 0, -4), rand(0, 9999));
echo $phone;
// 000-000-2317

【讨论】:

  • 这个结果是 0951(4 位数)
  • 只需将后4位替换为随机数,输出整个修改后的电话号码
  • 这段代码到底在做什么?你在抱怨之前测试过输出吗?
  • 我没有抱怨。我确实运行了代码。结果应该是一个 10 位修改后的数字,最后 4 位是随机的
  • 确认按 OP 要求工作。随机输出 10 位数字,最后 4 位数字。
【解决方案2】:
$phone = preg_replace_callback('/\d{4}$/', function($m) {
    return str_pad(mt_rand(0, 9999), 4, '0');
}, $phone);

【讨论】:

  • +1 比 preg 需要的复杂,但是,嗯,它完成了这项工作。
【解决方案3】:

您可以将rand 方法与str_pad 方法一起使用。

$phone = '000-000-'.str_pad(rand(0,9999), 4, '0');

【讨论】:

    【解决方案4】:
    $phone = '000-000-0000';
    $phone=explode('-',$phone);
    $phone[2]=str_pad(rand(0,9999), 4, 0);
    $phone=implode('-', $phone);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-20
      • 1970-01-01
      • 1970-01-01
      • 2021-08-07
      • 2022-06-18
      • 2021-06-01
      • 2019-11-03
      相关资源
      最近更新 更多