корекция на низ от числа със substr ?!?

mnis

Registered
Здравейте,
Имам таблица с данни на потребители...
Едно от полетата е за телефонния номер на потребителя. В момента телефонните номера са вмъкнати по най-различни начини: примерно 0888.1234.56 други са 0889/123 456 трети 0889-123-456, четвърти 052-123456...

Желанието ми е всички номера да се показват в сайта в следния формат:
0889 123 456 (за мобилните), 052 123 456 за стационарните и т.н. (с интервал между трите групи числа)

Проблема реших на 50%. Направих следното:
1. Променям всички телефонни номера във вида: 0888123456 чрез
Код:
$telephone = str_replace("/", "", $telephone);
(за номерата имащи / наклонена черта в номера,
а след това се опитвам да ги "разделя" по желания от мен начин ( 0889 123 456 )

Но именно в това "разделяне нещо не мога да се справя.
Мисля, че трябва да се направи със substr. Опитвах сума ти варианти, но винаги нещо бъркам.

Ще се радвам, ако някой ми помогне.
 
$telephone = "0888.1234.56";
$telephone = preg_replace("/\D/", "", $telephone);
$phone = strrev($telephone);
preg_match("/(\d{3})(\d{3})(\d*)/", $phone, $masiv);
$telefon = $masiv[1]." ".$masiv[2]." ".$masiv[3];
$telefon = strrev($telefon);
echo $telefon;
 
Явно ще трябва да прочета и за preg_match (освен за substr) :)

Благодаря за оказаната помощ raiden - заслужи си точката...
 
Знам че с регулярни изрази не е най-подходящо ама поне няма да стават грешки. И все пак давай да действа отзад напред, че така с 9 цифрени номера изкарва 4 цифрен код отпред

echo '0'.strrev(wordwrap(strrev(substr($telephone,1,strlen($telephone))),3," ",true));
 
ок - но какво да направя за номерата с по 5 или 6 цифри, например 5-69-09
или 11-22-33 ?!?

Edit: В момента няма проблеми със стандартните номера (0889 123 456), но когато номера е с 6 цифри (или по-малко), нещо се обърква и не извежда коректно номера?!?
 
$telephone = "626";
$telephone = preg_replace("/\D/", "", $telephone);
if(strlen($telephone) > 6) {
echo '0'.strrev(wordwrap(strrev(substr($telephone,1,strlen($telephone))), 3, " ", true)); } else {
echo strrev(wordwrap(strrev($telephone),2," ",true)); }

Нещо такова... предполагам 9-10 цифрените номера ще са ти с код на населено място или мобилен оператор, затова започвам с 0, а останалите ще са само цифри така че си ги разделя на по 2 по 2
 
а-ха..... сега вече сханах :)

raiden - отвори някаква тема, за да ти дам още една точка, че съм ти задължен :D
 
Хах, няма нужда :) Едно благодаря и на бафито за по-краткия вариант
 

Горе