Php 检查手机号码

Php 检查手机号码,php,Php,我想通过API发送短信,但其中一个要求是我必须使用国家代码,其次我需要确保号码长度正确 首先,我需要删除数字中的所有空格,检查字符长度是否为11,检查数字是否以07开头,然后将其替换为+44 解决这个问题最简单的方法是什么?我在想 $number = '07803 556557'; $number = str_replace(' ', '', $number); if (strlen($number) == '11' && substr($number, 0, 2) == '07

我想通过API发送短信,但其中一个要求是我必须使用国家代码,其次我需要确保号码长度正确

首先,我需要删除数字中的所有空格,检查字符长度是否为11,检查数字是否以07开头,然后将其替换为+44

解决这个问题最简单的方法是什么?我在想

$number = '07803 556557';
$number = str_replace(' ', '', $number);
if (strlen($number) == '11' && substr($number, 0, 2) == '07') {
    $number = str_replace('07', '+44', $number);
}
总结这些评论,我建议。。。
  • 从输入中删除所有非数字字符。这不仅会删除开头的空格和
    +
    ,还会删除人们有时添加的拼写错误或字符,如
    -

  • 检查长度如果不符合您的要求,请停止。但是,您确定只能有长度为11的数字吗

  • 检查前两个数字是否为
    44
    07
    ,否则停止。但是,您确定不接受其他国家/地区代码吗

  • 将前两个数字更改为
    +44
    。但是,请记住ewcz所说的:如果您使用
    str_replace()
    ,您可能无法获得所需的内容。相反,只需替换前两个:
    $number=substr\u replace($number,“+44”,0,2)

  • 补充说明:
    • 永远不要相信或假设用户的输入。您将有用户输入非数字字符、HTML、SQL、PHP、随机字符和其他您不会想到的东西——只是为了好玩

    如果数字以+44开头而不是11位长怎么办?
    str_replace('07','+44',$number)
    替换所有出现的
    07
    ,这可能不是你想要的。…@H.Jabi那么它不会发送短信,我认为人们无论如何都不会在手机号码字段中输入+44。@ewcz是的,你的正确。也许我可以分解字符串,删除前2个元素,然后在itSickaaron的前面加上+44,比如,我总是输入正确的国家代码。当涉及到用户输入时,不要假设任何东西。OP,这回答了你的问题吗?有帮助吗?或者根本没有帮助?请向上/向下投票和/或相应地将答案标记为已接受。