【问题标题】:PHP - adding characters in middle of a string (starting from the end)PHP - 在字符串中间添加字符(从末尾开始)
【发布时间】:2011-08-27 18:38:00
【问题描述】:

如何在字符串中间添加字符?

我正在尝试将美国号码(例如 2121231234)格式化为一个带有破折号的号码,例如:212-123-1234。

我不知道这串数字会有多长,
可能是 12121231234,甚至可能是 0012121231234,
在这种情况下,我希望它分别变成 1212-123-1234 和 001212-123-1234。

到目前为止,这是我想出的:

$phone_number = '2121231234';
$phone_number = str_split($phone_number); // [2,1,2,1,2,3,1,2,3,4]
$phone_number = array_reverse($phone_number); // [4,3,2,1,3,2,1,2,1,2]

array_splice($phone_number, 4, 0, '-'); // [4,3,2,1,-,3,2,1,2,1,2]
array_splice($phone_number, 8, 0, '-'); // [4,3,2,1,-,3,2,1,-,2,1,2]

$phone_number = array_reverse($phone_number); // [2,1,2,-,1,2,3,-,1,2,3,4]
$phone_number = implode($phone_number); // "212-123-1234"

这很有效,但完成这么简单的任务似乎太过分了。

我错过了什么?

【问题讨论】:

    标签: php string string-formatting character phone-number


    【解决方案1】:

    试试看

    $phone_number = "2121231234";
    $phone_number = substr($phone_number, 0, 3) . '-' . substr($phone_number, 3, 6) . ' - '.
    substr($phone_number, 6, strlen($phone_number));
    

    【讨论】:

      【解决方案2】:

      像这样

      $phone_number = substr_replace($phone_number, '-' , strlen($phone_number)-7 , 0);
      $phone_number = substr_replace($phone_number, '-' , strlen($phone_number)-4 , 0);
      

      【讨论】:

        【解决方案3】:

        试试regular expressions:

        echo preg_replace('/^(.*?)(.{3})(.{4})$/', '$1-$2-$3', $telnum);
        

        【讨论】:

        • 很好,最优雅的解决方案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-29
        • 1970-01-01
        • 2011-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多