user2450639
user2450639

Reputation: 306

Logic for long number string pattern, adding spaces in php

I have string number:

$number = "101011004113511113";

And I need to convert this to format like:

$pattern = "10 101 1004 1135 11113";

I have succeed that with this code:

<?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;

I would like to know is there a better programming solution for this problem. As I currently learning programming I would like opinion of a experienced programmer, is some better programming solution even necessary.

Upvotes: 2

Views: 35

Answers (1)

AbraCadaver
AbraCadaver

Reputation: 78994

You can use a regex pattern to capture the count of numbers you want and then join them by a space:

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

This is only the second question where I get to use vsprintf:

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

Upvotes: 2

Related Questions