长数字字符串模式的逻辑,在php

时间:2019-03-22 15:30:13

标签: php logic

我有字符串号:

$number = "101011004113511113";

我需要将其转换为以下格式:

$pattern = "10 101 1004 1135 11113";

我成功使用了以下代码:

<?php

    $number = "101011004113511113";

    $pattern = "10 101 1004 1135 11113";

    $newNumber = "";

    for ($i = 0; $i < strlen($number); $i++)
    {
        if ($i == 2)
        {
            $newNumber .= " ";
        }

        if ($i == 5)
        {
            $newNumber .= " ";
        }

        if ($i == 9)
        {
            $newNumber .= " ";
        }

        if ($i == 13)
        {
            $newNumber .= " ";
        }

        $newNumber .= $number[$i];
    }

    echo $newNumber;

我想知道是否存在针对此问题的更好的编程解决方案。当我目前正在学习编程时,我希望有经验的程序员会认为甚至有必要提供更好的编程解决方案。

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式模式来捕获所需的数字计数,然后用空格将它们连接起来:

preg_match('/(\d{2})(\d{3})(\d{4})(\d{5})/',$number, $result);
$result = implode(' ', array_slice($result, 1));

这只是我使用vsprintf的第二个问题:

$result = vsprintf("%d%d %d%d%d %d%d%d%d %d%d%d%d%d", str_split($number));