【问题标题】:Split data without delimiter?没有分隔符的拆分数据?
【发布时间】:2011-08-15 16:40:17
【问题描述】:

好吧,假设我的电话号码存储在我的表中:

“0008675309”

我显然不想这样显示它,我想在调用它时将其格式化为:

(000)867-5309

用 / - 或 .以便我以后可以拆分它?还是可以按字符数拆分?

【问题讨论】:

    标签: php sql syntax split


    【解决方案1】:

    处理任何这些格式的电话号码的性能成本和代码都很简单,因此完全取决于您的偏好。要回答您的问题,使用 substr 函数很容易获取前三个字符、后三个字符和后四个字符。

    【讨论】:

    • 有道理。我正在尝试专注于学习最佳实践,因此您的回答非常相关,我想我采用哪种方式并不重要(至少在这种情况下)。谢谢我使用子字符串。
    【解决方案2】:

    如果您只存储北美电话号码(10 位数字),那么正如@mellamokb 所说,无论哪种方式都可以。如果您可能要存储国际号码,则应尽早(如果可能)尽可能多地捕捉细节,因为以后可能很难知道如何标点号码。

    【讨论】:

    • 也有道理,我现在不使用国际号码,但我会记住这一点,谢谢。
    【解决方案3】:

    将 preg_split 与 PREG_SPLIT_NO_EMPTY 一起使用

    【讨论】:

      【解决方案4】:

      其他答案完全正确。如果您想要它的实际代码,我认为以下应该可以解决问题(索引可能会偏离一个糟糕!):

      $phone_number="0008675309"
      $phone_number=substr_replace($phone_number, "(", 0, 0);
      $phone_number=substr_replace($phone_number, ")", 4, 0);
      $phone_number=substr_replace($phone_number, "-", 8, 0);
      

      【讨论】:

        【解决方案5】:

        这是一个可以做你想做的事情的班轮:

        $phone = preg_replace('^(\d{3})(\d{3})(\d{4})$', '($1)$2-$3', $phone);
        

        如果输入格式不匹配(国际号码),它不会更改格式。

        【讨论】:

        • 亲!完美,我也需要将它们分成变量。双重打击!您可以推荐一个好的资源来了解更多关于 \d 和 \w 的含义吗?或者更正要搜索的术语?
        猜你喜欢
        • 2012-11-07
        • 1970-01-01
        • 2021-05-30
        • 2013-11-27
        • 1970-01-01
        • 1970-01-01
        • 2018-10-25
        • 1970-01-01
        • 2013-06-07
        相关资源
        最近更新 更多