2011-05-12 2 views
0

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

Электрощитовый: 265-7404-6, Маркетинг Горячая линия: 265-7403, B'ce : 333-6848

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

Expected formatting of data

в случае EXTENS иона как: 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, который используется для извлечения информации из базы данных? – joshhendo

+0

function printdir() { $ mysqli = new mysqli (постоянный («хост»), постоянный («имя пользователя»), константа («пароль»), константа («база данных»)); $ storedProc = "SELECT * FROM' directory'; "; $ result = $ mysqli-> query ($ storedProc); if ($ mysqli-> affected_rows> 0) { while ($ row = $ result-> fetch_assoc()) { echo $ row ['phone'];/* Форматирование здесь */ \t} \t} } –

+0

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

ответ

0
<?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}\2\d{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; 
} 



?> 

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

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

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

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

+0

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

+0

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

+0

Я решил, но я должен ждать 8 часов. –

Смежные вопросы