【问题标题】:How to delete the first digit number in PHP如何删除PHP中的第一个数字
【发布时间】:2019-10-09 17:27:56
【问题描述】:

我有一个以+63和09开头的电话号码数据

例如用户插入 09123456789 然后保存。如果用户输入 +639123456789,则不应成功,因为它根本是同一个号码。

我尝试使用 substr_replace

$data3 = substr_replace("+63", "0",0, 3);

还有其他选择吗?我认为 substr_replace 将来会有错误。

谢谢

【问题讨论】:

  • 试试str_replace('+63','0')
  • substr_replace 可能比str_replace 更安全
  • 我没有看到您要解决的问题。正如我所看到的,这个问题与SO无关。虽然它可能会发布在代码审查中
  • 那些事情已经解决了。我建议在前端使用intl-tel-input,在后端使用libphonenumber-for-php

标签: php regex laravel preg-replace regex-negation


【解决方案1】:

如果+63 必须在开头,您可以使用preg_replace 之类的

$s = preg_replace('~^\+63~', '0', $s);

这里,

  • ^ - 字符串位置的开始
  • \+ - 文字 +
  • 63 - 63 子字符串。

查看regex demoPHP demo

如果您需要清理和验证国际电话号码,请同时考虑Tpojka's suggestion 组合使用前端的intl-tel-input 和后端的libphonenumber-for-php

【讨论】:

    【解决方案2】:

    在这种情况下,您可以有条件检查并拥有str_replace

    如果您的请求中有 +,则删除前 3 个字母,包括 +

    if (substr($phone, 0, 1) == '+') {
        $phone = str_replace(substr($phone, 0, 3), '0', $phone);
    }
    
    $phone_number = $phone;
    

    【讨论】:

      猜你喜欢
      • 2011-10-12
      • 2011-04-03
      • 2018-06-30
      • 2018-06-23
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      相关资源
      最近更新 更多