我正在开发一个 _SMS 应用程序_,需要能够将发件人的电话号码从 +11234567890 转换 为 123-456-7890 ,以便可以将其与 MySQL 数据库 中的记录进行比较。
这些数字以后一种格式存储,以便在网站的其他地方使用,我不想更改这种格式,因为它需要修改大量代码。
我将如何使用 PHP 来解决这个问题?
谢谢!
原文由 NightMICU 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在开发一个 _SMS 应用程序_,需要能够将发件人的电话号码从 +11234567890 转换 为 123-456-7890 ,以便可以将其与 MySQL 数据库 中的记录进行比较。
这些数字以后一种格式存储,以便在网站的其他地方使用,我不想更改这种格式,因为它需要修改大量代码。
我将如何使用 PHP 来解决这个问题?
谢谢!
原文由 NightMICU 发布,翻译遵循 CC BY-SA 4.0 许可协议
我对一个非常相似(早先提出的)问题( 将 10 位数字字符串格式化为连字符的电话号码])的建议需要很少的修改就可以在这里成功。
有较早的答案使用 sscanf()
或 sprintf()
,但没有人费心将这两个出色的功能放在一起。
格式参数中基于占位符的语法为开发人员提供了高度的控制。对于大多数开发人员来说,定制/维护这种方法应该没有正则表达式那么令人生畏。
vprintf()
允许您声明要使用单个值数组填充的占位符。
代码:( 演示)
$string = '+11234567890';
vprintf('%s-%s-%s', sscanf($string, '+1%3s%3s%4s'));
// 123-456-7890
或者因为只添加连字符,所以可以使用 implode。
echo implode('-', sscanf($string, '+1%3s%3s%4s'));
// 123-456-7890
原文由 mickmackusa 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答4.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答1.4k 阅读✓ 已解决
796 阅读
647 阅读