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

如何使用PHP从指定HTML字符串中提取电话号码?

用PHP提取指定电话号码的实现方案

没问题,用PHP从这段带HTML的字符串里提取目标电话号码其实很简单,咱们可以借助正则表达式来搞定,毕竟目标号码有清晰的格式特征(以+420开头,后跟空格分隔的数字)。下面给你两种实用的方案:

方案1:直接匹配电话号码格式

这种方法适合确定目标号码格式固定的场景,直接通过号码的格式特征来匹配:

// 你的原始字符串
$htmlString = '<p><strong>Studio Diana</strong><br>Lidická 25<br>Brno, 602 00<br>Tel.: +420 731 58 34 12<br>E-mail: <a href="mailto:diana@studio-diana.cz">diana@studio-diana.cz</a><br><a href="http://www.studio-diana.cz/" target="_blank">http://www.studio-diana.cz</a><br><strong>&nbsp;</strong><br><strong>&e...</strong></p>';

// 定义匹配规则:+420 后跟3位数字+空格+2位数字+空格+2位数字+空格+2位数字
$pattern = '/\+420\s\d{3}\s\d{2}\s\d{2}\s\d{2}/';
// 执行匹配
preg_match($pattern, $htmlString, $matches);

// 输出结果
if (!empty($matches)) {
    $phoneNumber = $matches[0];
    echo "提取到的电话号码:" . $phoneNumber; // 输出:+420 731 58 34 12
} else {
    echo "未找到匹配的电话号码";
}

方案2:结合前缀精准定位

如果字符串里可能存在其他类似格式的数字串,咱们可以通过Tel.:这个前缀来精准定位目标号码,避免误匹配:

// 你的原始字符串
$htmlString = '<p><strong>Studio Diana</strong><br>Lidická 25<br>Brno, 602 00<br>Tel.: +420 731 58 34 12<br>E-mail: <a href="mailto:diana@studio-diana.cz">diana@studio-diana.cz</a><br><a href="http://www.studio-diana.cz/" target="_blank">http://www.studio-diana.cz</a><br><strong>&nbsp;</strong><br><strong>&e...</strong></p>';

// 匹配Tel.:后面的电话号码,捕获数字部分
$pattern = '/Tel\.:\s*(\+420\s[\d\s]+)/';
preg_match($pattern, $htmlString, $matches);

// 处理并输出结果
if (!empty($matches[1])) {
    // 去除多余的连续空格(确保格式整洁)
    $phoneNumber = trim(preg_replace('/\s+/', ' ', $matches[1]));
    echo "提取到的电话号码:" . $phoneNumber; // 输出:+420 731 58 34 12
} else {
    echo "未找到匹配的电话号码";
}

小提示

  • 方案1的正则是完全匹配目标号码的格式,适合格式固定的情况;
  • 方案2通过前缀锁定,容错性更强,即使号码格式有细微变化(比如多一个空格)也能提取到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:07:17