删除电话号码前的第一个 1 和空格?

问题描述 投票:0回答:3

我进行了搜索,认为这很容易找到。虽然我还没有发现任何与我需要的东西相关的东西,但类似的问题来自海外的人,他们的电话格式不同,带有加号。我的很多电话号码条目都以 1 和空格开头。我做了一个简单的 str_replace 然后我意识到如果一个数字在中间有一个 1 后面跟着一个空格,那会把它搞砸

$string = trim($string);

$string = str_replace('1 ', '', $string); 

适用于以

开头的电话号码

1 800-555-1111

1 222-555-1111

但如果电话号码是

1 222 551 1111

然后 551 和空间会把事情搞砸。如何重新编写,以便仅删除第一个 1 和以下空格而其余部分保持不变?谢谢。

编辑

我忘了说条目并不总是以 1 和空格开头。有时他们可能是

888-555-1111

888 555 1111

1 888 555 1111

php replace preg-replace eregi
3个回答
0
投票

remove the first 1 and space

substr($string,2)
(不使用
trim()
方法)或
substr($string,1)
(如果您首先使用
trim()
方法)将起作用,但您确定您的号码始终以
1
whitespace
开头吗?

您是否添加了任何检查或条件以确保用户输入始终以

1
开头,然后是
space

如果您确定这一点,那么子字符串解决方案会删除前两个,然后返回字符串的其余部分。


0
投票

你可以使用 regex 来实现这个:-

$phone_number = '1 800-555-1111'
echo preg_replace('/^\d\s+/', '', $phone_number);
// Will echo 800-555-1111

$phone_number = '1 800 555 1111'
echo preg_replace('/^\d\s+/', '', $phone_number);
// Will echo 800 555 1111

0
投票

如果有时号码可能是 888-555-1111 -,请使用 if :

$str = "1 978 981 543";
$str_check = substr($str, 0, 2);
$need = "1 ";

if($str_check == $need) {
  echo substr($str, 2);
} else {
  echo $str;
}
© www.soinside.com 2019 - 2024. All rights reserved.