使用PHP格式化电话号码

时间:2015-03-25 16:02:45

标签: php formatting phone-number

在数据库中,我在customers表中有一个名为customers_telephone的字段。 我想输出这样的电话号码(555)555-5555。 在这个CMS(oscommerce)中,invoice.php上的输出看起来像这样。

<td class="main"><?php echo $order->customer['telephone']; ?></td>

我找到了可能有用的代码:

<?php
function format_telephone($phone_number)
{
    $cleaned = preg_replace('/[^[:digit:]]/', '', $phone_number);
    preg_match('/(\d{3})(\d{3})(\d{4})/', $cleaned, $matches);
    return "({$matches[1]}) {$matches[2]}-{$matches[3]}";
}
?>
<?php echo format_telephone($customer_phone); ?>

但是我很困惑在哪里放置这个和要插入的变量,我只需要格式,只在这里和美国手机。

3 个答案:

答案 0 :(得分:2)

您可以使用正则表达式

$phone_numbers = array( 
    '555-555-5555',
    '5555425555',
    '555 555 5555',
    '1(519) 555-4444',
    '1 (519) 555-4422',
    '1-555-555-5555',
    '1-(555)-555-25555',
);
$regex = "/^(\d[\s-]?)?[\(\[\s-]{0,2}?\d{3}[\)\]\s-]{0,2}?\d{3}[\s-]?\d{4}$/i";
foreach( $phone_numbers as $number ) {
    echo $number . ': ' . ( preg_match( $regex, $number ) ? 'valid' : 'invalid' ) . '<br/>';
}


555-555-5555: valid
5555425555: valid
555 555 5555: valid
1(519) 555-4444: valid
1 (519) 555-4422: valid
1-555-555-5555: valid
1-(555)-555-5555: valid
1-(555)-555-25555: invalid

答案 1 :(得分:0)

没关系。

在Invoice.php文件中,请确保在<td

中使用之前有以下代码块
<?php
function format_telephone($phone_number)
{
    $cleaned = preg_replace('/[^[:digit:]]/', '', $phone_number);
    preg_match('/(\d{3})(\d{3})(\d{4})/', $cleaned, $matches);
    return "({$matches[1]}) {$matches[2]}-{$matches[3]}";
}
?>

所以把他的代码行放在某处,然后在这行代码中确保你有

<td class="main"><?php echo format_telephone($order->customer['telephone']); ?></td>

就是这样。在代码上使用它之前,您需要具有该功能。如果您有其他问题,请告诉我们。

答案 2 :(得分:0)

如果您有函数的代码,例如:

<?php
function hello($hi) {
return($hi);
}
echo(hello("hey"));
?>

这会回应'嘿'。

无论如何,现在到了这一点:你想要运行以下内容来回应电话号码。

<td class="main"><?php echo format_telephone($order->customer['telephone']); ?></td>

确保在尝试调用之前添加功能代码!