【问题标题】:Convert a number to international, PHP将数字转换为国际,PHP
【发布时间】:2011-01-13 13:15:38
【问题描述】:

在 PHP 中,将手机号码转换为国际格式的最快方法是什么:

所以 07123456789 变成 44712​​3456789。

我尝试了几种方法,但似乎无法让它发挥作用。

这是当前脚本:

    if(strlen($gsm) > 2) {
        if(!substr_compare($gsm, "07", 0, 2, false)) {
            unset($gsm);
        }
        elseif (substr_compare($gsm, "07", 0, 3, true)) {
            if(strlen($gsm) == 11) {
                return "447" . substr($gsm, 2);
            }
        }
    }

注意:此脚本仅在数字与正则表达式匹配时运行。

【问题讨论】:

  • 快如脚本执行时间或代码行/复杂度?

标签: php internationalization string-formatting phone-number


【解决方案1】:

大概是这样的吧?

$intl_number = preg_replace('/^0/','44',$uk_number);

或者如果您只想使用英国手机号码:

$intl_number = preg_replace('/^07/','447',$uk_mob_number);

(注意:我假设特定于英国,因为您在问题中指定了“44”)

这确实使用了正则表达式,但执行速度应该很快,因为它锚定在字符串的开头。

【讨论】:

  • 轻微错字:$intl_number = preg_replace('/^07/,'447',$uk_mob_number);应该是 $intl_number = preg_replace('/^07/','447',$uk_mob_number);
  • @Kyle - 哦。固定的。谢谢。 (当你没有语法高亮并且你实际上并没有运行代码时,很容易错过奇怪的引号!)
【解决方案2】:

我想到的最快的方法,只要你的数字在这一点上与格式 07xxxxxx 匹配:

 $number = "07123456789";
 $number = '44'.substr($number,1);

【讨论】:

  • 我有时很厚,你的回答很直截了当,而且效果很好,非常感谢队友......你错过了平等:D
  • @kyle upsy xD 是的,我先写了 return,然后用变量名替换了它 - 很高兴我能提供帮助
【解决方案3】:

【讨论】:

  • 知道有用,虽然不是这个特定问题的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 2016-04-05
  • 2014-01-07
  • 1970-01-01
相关资源
最近更新 更多