首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这条PHP语句意外地删除了7?

为什么这条PHP语句意外地删除了7?
EN

Stack Overflow用户
提问于 2013-03-08 00:38:47
回答 1查看 70关注 0票数 0

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

只有两行PHP代码,如果用户在电话号码的开头输入第一个'44‘,我会试着去掉它:

代码语言:javascript
复制
    $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’?

EN

回答 1

Stack Overflow用户

发布于 2013-03-08 00:50:16

就像科林评论的那样,您需要在从strpos()返回时使用严格的比较===,因为如果没有找到子字符串,它将返回false;如果它位于字符串的开头,并且false == 0为true,则返回0;如果false === 0为false,则返回false。

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

代码语言:javascript
复制
if( preg_match('/^44/', $telephone) ) { ... }

或者使用它进行替换:

代码语言:javascript
复制
preg_replace('/^44/', '0', $telephone);

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

代码语言:javascript
复制
$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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15276705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档