0

我希望有一双新鲜的眼睛看着我的问题,这让我发疯。任何帮助,将不胜感激。

如果用户在电话号码的开头输入第一个“44”,则仅从两行 PHP 代码中尝试删除:

    $telephone = '44789562356';
    $telephone = str_replace(' ','',$telephone);
    $telephone = str_replace('+44','0',$telephone);
if(strpos($telephone,"44")==0){
        $telephone = substr($telephone,2);
        $telephone = '0'.$telephone;
    }

为什么它会从所有电话号码中去掉“7”?

4

1 回答 1

0

就像 Colin 评论的那样,您需要对===return from使用严格的比较,strpos()因为false如果找不到子字符串,并且0它位于字符串的开头并且false == 0为 true,则它返回,并且false === 0为 false。

或者,您可以使用正则表达式仅在字符串的开头指定匹配,如下所示:

if( preg_match('/^44/', $telephone) ) { ... }

或者用它替换:

preg_replace('/^44/', '0', $telephone);

您的代码可以简化为以下内容:

$telephone = '+44-789 56-2356 ask for larry';
$telephone = preg_replace('/[^0-9]/','',$telephone); // remove all non-numeric characters
$telephone = preg_replace('/^44/','0',$telephone);
echo $telephone;
// output: 0789562356
于 2013-03-07T16:50:16.150 回答