【问题标题】:Format a phone number with PHP使用 PHP 格式化电话号码
【发布时间】:2015-03-25 16:02:44
【问题描述】:

在数据库中,我在客户表中有一个名为 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); ?>

但我很困惑将其放置在哪里以及要插入哪些变量,我只需要格式,仅在此处并且仅适用于美国手机。

【问题讨论】:

  • 这是一个函数。您可以像调用任何其他函数一样调用它: echo format_telephone($order->customer['telephone']);

标签: php formatting phone-number


【解决方案1】:

没关系。

在 Invoice.php 文件中,确保在 &lt;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】:

    你可以使用正则表达式

    $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
    

    【讨论】:

    • 非常感谢您的帮助!我今天学到了一些东西!!我还没有机会尝试最后一个正则表达式,
    【解决方案3】:

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

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

    这会回声“嘿”。

    无论如何,现在重点是:您需要运行以下命令来回显电话号码。

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

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

    【讨论】:

      猜你喜欢
      • 2020-02-05
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      • 2011-08-31
      相关资源
      最近更新 更多