电话号码与字母的正则表达式

发布于 2024-10-22 05:13:11 字数 505 浏览 1 评论 0原文

我需要将电话号码格式化为一长串数字(美国电话号码格式)

// I know there are tons more
$phones = array(
    '1(800) 555-1212',
    '1.800.555.1212',
    '800.555.1212',
    '1 800 555 1212',
    '1.800 CALL NOW' // 1 800 225-5669
);

foreach($phones as $phone) {
    echo "new format: ".(preg_replace("/[^0-9]/", "", $phone)."<br />\n";
}

现在应该返回类似这样的内容:

8005551212 (with or without the 1)

但是如何使用 CALL NOW 将号码映射/转换为:

18002255669

I need to format a phone number as one long string of numbers (US Phone Number format)

// I know there are tons more
$phones = array(
    '1(800) 555-1212',
    '1.800.555.1212',
    '800.555.1212',
    '1 800 555 1212',
    '1.800 CALL NOW' // 1 800 225-5669
);

foreach($phones as $phone) {
    echo "new format: ".(preg_replace("/[^0-9]/", "", $phone)."<br />\n";
}

Now this should return something like this:

8005551212 (with or without the 1)

but how do I map/convert the number with CALL NOW to:

18002255669

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

水水月牙 2024-10-29 05:13:11

为了节省一些打字...

$phoneNumber = strtr($phoneLetters, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "22233344455566677778889999");

To save some typing...

$phoneNumber = strtr($phoneLetters, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "22233344455566677778889999");
温柔少女心 2024-10-29 05:13:11

您可以使用strtr()

$number = strtr($number, array('A'=> '2', 'B' => '2', ... 'Z' => '9'));

或者实际上,我认为:

$number = strtr($number, "AB...Z", "22...9");

You could use strtr().

$number = strtr($number, array('A'=> '2', 'B' => '2', ... 'Z' => '9'));

Or actually, I think:

$number = strtr($number, "AB...Z", "22...9");
热鲨 2024-10-29 05:13:11

第一步,您需要执行不同的正则表达式替换(您的版本现在将丢失所有字母):

$result = preg_replace('/[^A-Z0-9]+/i', '', $phone);

然后,您需要获取字符串并将每个字母替换为其相应的数字(请参阅konforce的答案)。这并不是正则表达式真正的工作。

For the first step, you need to do a different regex replace (your version would now lose all the letters):

$result = preg_replace('/[^A-Z0-9]+/i', '', $phone);

Then, you need to take the string and replace each letter with its corresponding digit (see konforce's answer). That's not really a job for a regex.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文