我进行了搜索,认为这很容易找到。虽然我还没有发现任何与我需要的东西相关的东西,但类似的问题来自海外的人,他们的电话格式不同,带有加号。我的很多电话号码条目都以 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
到
remove the first 1 and space
substr($string,2)
(不使用 trim()
方法)或 substr($string,1)
(如果您首先使用 trim()
方法)将起作用,但您确定您的号码始终以 1
和 whitespace
开头吗?
您是否添加了任何检查或条件以确保用户输入始终以
1
开头,然后是 space
?
如果您确定这一点,那么子字符串解决方案会删除前两个,然后返回字符串的其余部分。
你可以使用 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
如果有时号码可能是 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;
}