Преобразование телефонных номеров в гиперссылки «tel:» с заменой регулярного выражения

#php #regex #string

#php #регулярное выражение #строка

Вопрос:

У меня есть следующее, извлекаемое из базы данных:

Коммутатор: 265-7404-6, горячая линия по маркетингу: 265-7403, B’ce’ce333-6848

Я хочу преобразовать это во что-то подобное в PHP:

Ожидаемое форматирование данных

В случае расширения как: 265-7404-6 выполняется только синтаксический анализ: 265-7404

 function printdir()
{
   $mysqli = new mysqli(constant("host"),constant("username"),constant("password"), constant("database"));

   $storedProc = "SELECT * FROM `directory`;";
   $result = $mysqli->query($storedProc);

   if($mysqli->affected_rows>0)
   {
       while( $row = $result->fetch_assoc()) {
          echo $row['telephone']; /*Formatting here*/
       }
   }
}
  

Комментарии:

1. Можете ли вы опубликовать PHP-код, который вы используете для извлечения информации из базы данных?

2. функция printdir() { $mysqli = new mysqli(константа («хост»), константа(«имя пользователя»), константа («пароль»), константа («база данных»)); $StoredProc = «ВЫБРАТЬ * ИЗ directory ;»; $result = $mysqli->запрос ($StoredProc); if($mysqli-> затронутые строки>0) { while( $row = $result-> fetch_assoc()){ echo $row[‘телефон’]; /*Форматирование здесь*/ } } }

3. Эти constant() вызовы избыточны. Вы могли бы просто сказать new mysqli(host, username, password, ....)

4. Он должен выполнять поиск и замену.

5. Константы находятся в файле конфигурации: define(«host», «localhost»);

Ответ №1:

 $telnumber = explode('-', $row['telephone'], 3));

echo $telnumber[0].'-'.$telnumber[1];
  

Расширение и все, что стоит после второго значения, будет в $telnumber[2]

Комментарии:

1. Извините, только что заметил, что вы отметили это регулярным выражением, и я проигнорировал это. Тем не менее, это должно сработать.

2. Это не сработает. Он должен находить и заменять, как показано на рисунке выше. Телефонный номер содержит описание и текст. например, Отдел кадров: 343-3433. Я хочу включить набор номера с мобильного.

Ответ №2:

     <?php

function format_number($phone){
    $phone = preg_replace("#[^d{10}s]#",'',$phone);
    if(strlen($phone)==7)
        {
         $area = substr($phone,0,3);
    $prefix = substr($phone,3,4);

    $format = $area."-".$prefix;
    $phone = "<a href="tel:".$format."">$format</a>";
    return($phone);
        }
     if(strlen($phone) != 10) return(False);
    $area = substr($phone,0,3);
    $prefix = substr($phone,3,3);
    $number = substr($phone,6,4);
    $format = $area."-".$prefix."-".$number;
    $phone = "<a href="tel:".$format."">$format</a>";
    return($phone);
}

function telephoneText($string)
{
$format_one.= 'd{10}'; //5085551234

$format_two_and_three .= 'd{3}(.|-)d{3}2d{4}'; //508.555.1234 or 508-555-1234

$format_four .= '(d{3})-d{3}-d{4}'; //(508)-555-1234

$format_five .='d{3}-d{4}'; //(508)555-1234

$format_five_seven .='d{7}';
$string = preg_replace("~({$format_one}|{$format_two_and_three}|{$format_four}|{$format_five}|{$format_five_seven})~e", 'format_number("$1")', $string);

return $string;
}



?>
  

Это то, чего я пытался достичь. Спасибо, ребята..