Reputation: 306
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
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