用条件PHP替换某些字符

jac*_*013 0 php string format substring

我正在研究PHP的一些东西.我想根据遇到的条件更改一些字符.我有一个循环通过一系列电话号码循环.它可以获得的值有两种可能的格式,+447532221414或者447532221414.我想要做的就是更换+44440

所以我有这个检查

$sub = substr($row["phone"], 0, 3);
if($sub == "+44")
{
  $phone = str_replace("+44", "0", $row["phone"]);
}
else if(substr($row["phone"], 0, 2) == "44")
{
  $phone = str_replace("44", "0", $row["phone"]);
}
Run Code Online (Sandbox Code Playgroud)

但我的问题是,当数在447532221414格式它不会改变的44,以0什么可能是错误的代码?还是有更好的方法?我的逻辑会影响44最后两位数字吗?对于前者447532221444

Mat*_*hai 6

你可以使用preg_replace:

$phone = "+447532221444";
$phone = preg_replace('/^\+?44/', '0', $phone);

var_dump($phone);
Run Code Online (Sandbox Code Playgroud)

正则表达式意味着什么:

^ - 将强制解析器仅替换在字符串开头找到的匹配项

\+?- 将匹配+,如果它存在,但如果+缺少解析器将继续