【问题标题】:Display multiple phone numbers with dashes用破折号显示多个电话号码
【发布时间】:2015-12-02 03:49:42
【问题描述】:

我遇到了一个问题,在这种情况下,我的网站中有一个客户角色,我必须为其保存他们的电话号码和备用电话号码,但因为客户属于美国,因此我们需要在那里poy 破折号在他们的电话号码中。例如:111-222-3333。 我还在网站中集成了一个推荐系统,我可以使用他们的电话号码推荐朋友。我可以一次将推荐发送到多个电话号码。例如:111-222-3333、111-333-444、444-233-9330 但条件是我们所指的电话号码不应该在客户的个人资料中(用户不应该已经使用该号码注册)。 当客户的电话号码用破折号保存时会出现问题,但是因为客户可以引用多个逗号分隔的电话号码,因此我无法提供破折号的模式来填写电话号码。但是现在客户可以发送推荐给电话号码这不是像(1112223333)那样的破折号,如果有人已经使用相同的电话号码注册并且具有像(111-222-3333)这样的破折号。在这种情况下,它不会与已注册的电话号码匹配。问题在于在引用时以破折号显示多个电话号码。任何人都可以为此提供解决方案。如何用破折号显示多个电话号码。对不起,如果您在理解这个概念上有任何困难,但我会再次解释。任何帮助,将不胜感激。对不起,我已经编辑了这个问题。我没有提到实际问题

【问题讨论】:

  • 您不应该存储格式化的电话号码,而应该只存储数字本身并在客户端按照您的需要进行格式化
  • 是的,但是我必须覆盖整个网站的 tpl 文件,因为这是客户的要求,所以在显示电话号码的地方以破折号显示它
  • 您可以只在数据库中保留数字,获取它们并在内存对象上创建反映您希望它们的格式的计算属性,例如 FormattedPhoneNumber 它将返回您的 PhoneNumber 属性但格式化方式您想要,并始终使用该 FormattedPhoneNumber 绑定到您的表单

标签: php drupal drupal-7 drupal-modules


【解决方案1】:

您似乎可以通过在比较之前去除所有非数字字符的电话号码来解决此问题。

您可以使用 preg_replace 从字符串中删除所有非数字字符,如下所示:

$str = preg_replace('/[^0-9]+/', '', $str);

这是一个比较的简短示例:

<?php

$phoneNumber1 = "(418) 515-4184";
$phoneNumber2 = "4185154184";
if (preg_replace('/[^0-9]+/', '', $phoneNumber1) == preg_replace('/[^0-9]+/', '', $phoneNumber1))
{
    echo "Phone numbers are the same";
}
else
{
    // do stuff
}

?>

希望有帮助!

【讨论】:

  • 我明白你的意思,但是一旦我获得了整个网站所有客户的所有电话号码,然后将其替换并相互比较,这将需要很长时间。
猜你喜欢
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 2015-09-29
  • 2015-09-17
  • 2022-09-22
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多