我希望能有一双新的眼睛来看待我的问题,这个问题让我发疯。任何帮助都将不胜感激。
只有两行PHP代码,如果用户在电话号码的开头输入第一个'44‘,我会试着去掉它:
$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’?
发布于 2013-03-08 00:50:16
就像科林评论的那样,您需要在从strpos()返回时使用严格的比较===,因为如果没有找到子字符串,它将返回false;如果它位于字符串的开头,并且false == 0为true,则返回0;如果false === 0为false,则返回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: 0789562356https://stackoverflow.com/questions/15276705
复制相似问题