-4

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

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

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

4

5 回答 5

13

利用preg_replace()

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

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

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

于 2012-08-22T17:45:29.457 回答
3

使用substr_replace(),不需要正则表达式或if块。

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

$new_number = substr_replace($number, '+'.$country_code, 0, ($number[0] == '0'));
于 2012-08-22T17:54:45.593 回答
2

你可以使用preg_replace

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

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

参考

  • 看看preg_replace 这里
  • 此处开始 REGEX 的基本语法
于 2012-08-22T17:45:13.827 回答
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:这是初级的。你真的应该通过一些教程。

于 2012-08-22T17:47:55.690 回答
0

您可以使用字符串操作:

$x = '012345678';
if ($x[0]=='0') $x[0] = ''; // delete leading zero
$x = '+1'.$x;
于 2012-08-22T17:45:31.903 回答