Php 如何将电话号码转换为新形式(带区号)

Php 如何将电话号码转换为新形式(带区号),php,regex,preg-replace,Php,Regex,Preg Replace,我正在试图找到一种方法,将电话号码(+4407111111111)转换为44711111之类的号码 基本上,我要求的东西将得到删除零和+。此外,如果此人可以选择区号 谢谢:-)如果你只想删除0和+你可以使用php的preg_replace函数。 如果要将数字拆分为国家代码、区号和实际数字,则需要有一个分隔符。如果只想删除0和+,则可以使用php的preg_replace函数。 如果要将电话号码拆分为国家代码、区号和实际号码,则需要有一个分隔符。使用preg\u replace()将电话号码转换为

我正在试图找到一种方法,将电话号码(+4407111111111)转换为44711111之类的号码

基本上,我要求的东西将得到删除零和+。此外,如果此人可以选择区号


谢谢:-)

如果你只想删除0和+你可以使用php的preg_replace函数。
如果要将数字拆分为国家代码、区号和实际数字,则需要有一个分隔符。

如果只想删除0和+,则可以使用php的preg_replace函数。 如果要将电话号码拆分为国家代码、区号和实际号码,则需要有一个分隔符。

使用
preg\u replace()
将电话号码转换为所需的输出:

$phone = '+4407111111111';
$newPhone = preg_replace('/^\+([1-9]+)0(\d+)$/','$1$2',$phone);
echo $newPhone;
正则表达式的解释:

  • ^=从字符串的开头开始
  • +=匹配一个“+”
  • ([1-9]+)=匹配从1到9的数字序列并将其分配给$1
  • 0=匹配一个“0”
  • (\d+$=匹配字符串末尾的所有数字,并将匹配分配给$2
  • 替换很简单,只需使用上面解释中定义的“$1$2”

    比尝试拆分给定电话号码更好的方法是将国家代码、区号和电话号码的数据作为单独的值提取。由于各国对电话号码的处理可能稍有不同,因此使事情变得更简单并提供更好的结果。

    使用
    preg\u replace()
    将电话号码转换为所需的输出:

    $phone = '+4407111111111';
    $newPhone = preg_replace('/^\+([1-9]+)0(\d+)$/','$1$2',$phone);
    echo $newPhone;
    
    正则表达式的解释:

  • ^=从字符串的开头开始
  • +=匹配一个“+”
  • ([1-9]+)=匹配从1到9的数字序列并将其分配给$1
  • 0=匹配一个“0”
  • (\d+$=匹配字符串末尾的所有数字,并将匹配分配给$2
  • 替换很简单,只需使用上面解释中定义的“$1$2”


    比尝试拆分给定电话号码更好的方法是将国家代码、区号和电话号码的数据作为单独的值提取。由于各国对电话号码的处理可能稍有不同,因此使事情变得更简单并提供更好的结果。

    让您的用户可以选择分别提供国家代码、区号和电话号码。我看到我的表单使用了您的方法,我无法将我的电话号码添加到这些表单+932134564545(显然,不是我正确的号码,但数字是相同的:)

    让您的用户选择分别提供您的国家代码、区号和电话号码。我看到我的表格使用了您的方法,我无法将我的电话号码添加到这些表格+932134564545(显然,不是我正确的号码,但数字是相同的:)

    如果您从电话号码中删除零,它可能会变成错误的号码。您所说的“如果此人可以选择区号”,是什么意思?所需的功能是什么?如果您从电话号码中删除零,则可能会变成错误的号码。您所说的“如果此人可以选择区号”,是什么意思?所需的功能是什么?我会在0匹配后添加一个{0,1},以确保
    ^+(\d\d)0{0,1}(\d+)$
    一些国家的国家代码超过2位。我会在0匹配后添加一个{0,1},以确保
    ^+(\d\d)0{0,1}(\d+)$
    一些国家的国家代码超过2位