Skip to content

Instantly share code, notes, and snippets.

@andreykin
Created February 22, 2019 14:07
Show Gist options
  • Save andreykin/7fa7c05c20d05642e1bfafe463b309c0 to your computer and use it in GitHub Desktop.
Save andreykin/7fa7c05c20d05642e1bfafe463b309c0 to your computer and use it in GitHub Desktop.
Возвращает отформатированный номер телефона, в виде 8 (987) 123-45-67, можно передавать несколько номеров
<?php
/**
* Возвращает отформатированный номер телефона, в виде 8 (987) 123-45-67
* Если введено несколько номеров (через запятую и т.д.), разделяет результат.
* @param string $phone телефон (возможно несколько номеров через запятую, точку с запятой, слеш или перенос строки)
* @param string $delimiter разделитель результата при возврате ("<br/>" по-умолчанию)
*/
function formatPhone($phone,$delimiter = '<br/>') {
$phone = str_replace(', ', ',', $phone);
$phone = str_replace('; ', ';', $phone);
$phone = str_replace('/ ', '/', $phone);
if (strpos($phone,',')) {
// разделить по запятым
$numbers = explode(",", $phone);
}
elseif (strpos($phone,';')) {
// разделить по точкам с запятой
$numbers = explode(";", $phone);
}
elseif (strpos($phone,'/')) {
// разделить по слешу
$numbers = explode("/", $phone);
}
else {
// разделить по переносу строки
$numbers = explode("\n", $phone);
}
/*
echo '<pre>';
print_r($numbers);
echo '</pre>';
*/
$phone = array();
foreach($numbers as $number)
{
$phone[] = preg_replace('~.*(\d{3})[^\d]*(\d{3})[^\d]*(\d{2})[^\d]*(\d{2}).*~', '8 ($1) $2-$3-$4', $number);
}
return implode($delimiter,$phone);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment