passshift
@passshift
php, js, html5, css

Кто-нибудь знает функцию для преобразования номера телефона?

Здравствуйте!

Подскажите пожалуйста php-функцию преобразования российского номера телефона к читаемому виду.

Храню в базе без "7" т.е. все номера вида 921******* и т.д., хочу выводить красиво: +7 (921) ***-**-**

Нужна короткая и быстрая функция, поделитесь кому не жалко. Благодарен.

Немного переделанное решение Ивана:

/**
     * Преобразование номера телефона для РФ
     *
     * @param   int  $int  номер телефона 10 цифр (без 7)
     * @return  string
     */
    public static function phone($int) {

        return preg_replace('/^(\d{3})(\d{3})(\d{2})(\d{2})$/iu', '+7 ($1) $2-$3-$4', $int);
    }
  • Вопрос задан
  • 5862 просмотра
Решения вопроса 1
print preg_replace( '/^(\d{3})(\d+)$/iu', '+7($1)$2', '921123456789' ); // +7(921)123456789

Пожалуйста.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Может здесь есть что то

habrahabr.ru/post/102352
Ответ написан
Чуть для себя переделаете:
function phone($phone) {
    $cleaned = preg_replace('/[^[:digit:]]/', '', $phone);

	if (strlen($phone) == 12) {
		preg_match('/(\d{2})(\d{3})(\d{3})(\d{2})(\d{2})/', $cleaned, $matches);
		return "+{$matches[1]} ({$matches[2]}) {$matches[3]}-{$matches[4]}-{$matches[5]}";
	} else {
		 return $cleaned ;
	}
}

$phone = "380501234567";

echo phone($phone);

Результат: +38 (050) 123-45-67
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы