使用Twig格式化电话号码

时间:2014-09-25 17:18:44

标签: php twig

我使用char(10)将电话号码存储在数据库中,例如4155551212

我希望Twig模板将其显示为(415) 555-1212

这是如何最好地完成的?

5 个答案:

答案 0 :(得分:10)

不必每次都添加此过滤器会很好,但它会满足我的需求。

<?php
require_once '../../../vendor/autoload.php';
Twig_Autoloader::register();
try {
    $loader = new Twig_Loader_Filesystem('templates');
    $twig = new Twig_Environment($loader, array('debug' => true,));
    $twig->addExtension(new Twig_Extension_Debug());
    $twig->addFilter(new Twig_SimpleFilter('phone', function ($num) {
        return ($num)?'('.substr($num,0,3).') '.substr($num,3,3).'-'.substr($num,6,4):'&nbsp;';
    }));
    echo $twig->render('filter.html', array('phone'=>'4155551212'));
} catch (Exception $e) {
    die ('ERROR: ' . $e->getMessage());
}
?>

filter.html

{{ phone|phone }}

答案 1 :(得分:1)

$numberPhone = '4155551212';
$firstChain = substr($numberPhone, 0, 3);
$secondChain = substr($numberPhone, 3, 3);
$thirdChain = substr($numberPhone, 6, 4);
$formatedNumberPhone = '(' . $firstChain . ') ' . $secondChain . '-' . $thirdChain;

echo $formatedNumberPhone;

对于那些对此有类似疑问的人来说,这是一个解决方案。

关于substr()如何工作的一点解释:

在这种情况下需要三个参数:

  1. 您要修改的链
  2. 表示函数将开始其过程的位置的索引
  3. 您要保留多少个字符
  4. 请注意,您可以将负值传递给第二个和第三个参数(有关详细信息,请转到官方文档)。

    在这种情况下,我正在使用电话号码的第一个字符,所以我告诉函数从0开始并保留3个字符,所以它看起来像我做的那样:susbtr($numberPhone, 0, 3)

    希望它有所帮助!

答案 2 :(得分:1)

美国电话号码格式:{{phone_number |电话|默认( “ - ”)}}

答案 3 :(得分:0)

这是在Symfony中进行的操作。

namespace AppBundle\Twig;

use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;

class AppExtension extends AbstractExtension {
    public function getFilters() {
        return [
            new TwigFilter('phone', [$this, 'phoneFilter']),
        ];
    }

    public function phoneFilter($phoneNumber) {
        if (substr($phoneNumber, 0, 2) == "+1") {
            return preg_replace("/(\+1)(\d{3})(\d{3})(\d{4})/", "$1 ($2) $3-$4", $phoneNumber);
        }
        return preg_replace("/(\d{3})(\d{3})(\d{4})/", "($1) $2-$3", $phoneNumber);
    }
}

答案 4 :(得分:-1)

Eu fiz assim: {{ p.number[:4] }} - {{ p.number[4:]}}
I did that way: {{ p.number[:4] }} - {{ p.number[4:]}}