You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用preg_match正确去除电话号码国家代码 避免误删中间相同数字

正则调整方案

问题原因

现有代码的正则没有限制匹配位置,会全局替换字符串中所有出现的359,所以号码中间的359也被误删了,同时没有覆盖国家代码的所有前缀格式(+、00、+00前缀)。

修正后的正则规则

只匹配字符串开头的国家代码段,正则写为:/^\+?(00)?359/

  • ^ 强制匹配字符串开头,确保只有前缀的国家代码会被处理
  • \+? 匹配可选的开头加号
  • (00)? 匹配可选的00前缀
  • 359 匹配固定的国家代码编号

完整修正代码

<?php
$string = '+00359 02 359 10969';
// 先移除所有空格
$string = str_replace(" ", '', $string);
// 仅替换开头的国家代码段
$string = preg_replace("/^\+?(00)?359/", '', $string);
// 强转int去除城市代码前导0
$string = (int)$string;

echo  $string;

输出验证

运行上述代码后输出结果为235910969,和预期一致,同时可以覆盖四种国家代码格式的处理:

  • 359开头的号码
  • +359开头的号码
  • 00359开头的号码
  • +00359开头的号码

内容的提问来源于stack exchange,提问作者user16462554

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 05:06:00