无法使用PHP匹配手机号码

无法使用PHP匹配手机号码,php,Php,我面临着一个问题,我试图用PHP匹配两个移动设备,但它没有按照预期提供输出。我在下面解释我的代码 <?php $mobile="09029704634"; $mobj="+919029704634"; if(strpos($mobj,$mobile)){ $flag=1; }else{ $flag=0; } echo $flag; ?> 看这里,两个移动设备在逻辑上是相同的。一个在开头有0,另一个在开头有国家代码+91。这里我需要,如果两个no在逻辑上相同,它应

我面临着一个问题,我试图用PHP匹配两个移动设备,但它没有按照预期提供输出。我在下面解释我的代码

<?php
$mobile="09029704634";
$mobj="+919029704634";
if(strpos($mobj,$mobile)){
    $flag=1;
}else{
    $flag=0;
}
echo $flag;
?>


看这里,两个移动设备在逻辑上是相同的。一个在开头有
0
,另一个在开头有
国家代码+91
。这里我需要,如果两个no在逻辑上相同,它应该返回1,否则返回0。在这里,任何国家/地区代码都可以出现,不仅仅是
+91
。请帮助我。

如果全球手机号码的长度不同,这可能是一个可以尝试的好选择。在开始时去掉所有0

通常,国内电话加0,国际电话加00。因此,在数字的开头键入any+或0,然后执行
strpos()


寻找反馈,如果这是低效的


添加:如果两个比较操作数以各自的格式交换,或不可预测,则唯一的方法是从数据库中获取所有国家代码,通过剥离国家代码或附加国家代码来比较操作数,进行多次检查,以最终推断它们在逻辑上是否相同。

那么显然,一个直接的
strpos
是不够的。那么数字长度呢?它们总是由10个数字组成吗?长度可能是b,我可以假设所有国家/地区的所有手机号码。我觉得你应该更仔细地捕获这些部分,并将它们存储在单独的字段/列中,然后你可以更容易/准确地对它们进行比较。你必须用约束定义逻辑。任何编程都没有神奇的逻辑。如果您不知道输入变量,则无法捕获所有场景。就这么简单。好的,你的代码在这种情况下运行得很好,但请看这里我添加了这一行
if(strpos($mobj,$mobile)| | strpos($mobj)| |$mobile===$mobj){
,并颠倒了值
i.e-$mobile=“+919029704634”,$mobj=“09029704634”;
。在这种情况下不起作用。在这里,我验证所有情况,以便无论哪个变量包含哪个值,两者在逻辑上都应该相同。然后,您必须拥有一个包含所有国家/地区代码的数据库,尝试将其追加并从操作数中删除,以最终检查其在逻辑上是否相同。在我的情况下,我无法将所有移动编号相同在这里,我添加了像
$mobj=ltrim($mobj,'0');
,我认为它工作得很好。
<?php

$mobile="09029704634";
$mobile= ltrim($mobile,'+');
$mobile = ltrim($mobile, '0');
$mobj="+919029704634";
if(strpos($mobj,$mobile)){
    $flag=1;
}else{
    $flag=0;
}
echo $flag;
?>