在PHP中用'+'替换前导零

时间:2012-08-22 17:42:57

标签: php

我想用“+”和国家/地区代码替换电话号码中的前导零。

如果电话号码从零开始(例如:07512345678),那么我想删除前导零并替换为“+”和国家代码(例如:7512​​345678),只需添加“+”和国家/地区代码。

在PHP中这样做的方法是什么?

5 个答案:

答案 0 :(得分:8)

使用preg_replace()

$newNumber = preg_replace('/^0?/', '+'.$countryCode, $phoneNumber);

第一个参数是正则表达式,它正在寻找你的前导零。第二个是您想要替换它(与国家代码连接的加号)。最后,$phoneNumber是原始电话号码。

将替换的值分配给变量$newNumber。随意更改变量以适合您的代码。

答案 1 :(得分:3)

使用substr_replace(),无需正则表达式或if阻止。

$number = '07512345678';
$country_code = '44';

$new_number = substr_replace($number, '+'.$country_code, 0, ($number[0] == '0'));

答案 2 :(得分:2)

您可以使用preg_replace

$newNumber = preg_replace("/^0/", "+", 07512345678)

当且仅当它为零时,这将替换每个数字的第一个字符。使用的正则表达式是:/^0/^告诉它查看第一个字符,然后仅匹配0。这个0将被第二个参数“+”替换。最后一个参数是源字符串。

<强>参考

  • 查看preg_replace here
  • 开始使用REGEX here
  • 的基本语法

答案 3 :(得分:0)

您可以使用字符串操作:

$x = '012345678';
if ($x[0]=='0') $x[0] = ''; // delete leading zero
$x = '+1'.$x;

答案 4 :(得分:0)

由于整个系统的复杂性,我怀疑preg_match()的效果不太好。

<?php
$countryCode = "XX";
$phone = array("0123455", "7837373");
foreach( $phone AS $number ) {
   if( $number[0] == '0' ) {
      $number = "+{$countryCode}" . substr($number,1);
   }
   echo "{$number}\n";
}
PS:这是基本的。你应该通过一些教程。

相关问题