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

如何在自有页面展示外部HTML中的hiOutsideTemp温度值

获取远程页面hiOutsideTemp温度值的PHP解决方案

看起来你已经搭了初步的代码框架,但XPath查询部分写一半卡住了对吧?我来帮你完善这个实现,确保能稳定获取目标温度值。

核心问题分析

你的原代码里XPath路径不完整,而且用绝对路径(/html/body/ta...)非常不可靠——只要目标页面的HTML结构稍有变动,这个路径就会失效。更好的方式是直接通过元素ID查询,因为hiOutsideTemp作为ID是页面唯一的,定位更精准。

修正后的完整代码

<?php
// 处理可能的HTML解析错误
libxml_use_internal_errors(true);

// 远程页面URL
$targetUrl = 'http://amira.meteokrites.gr/ZWNTANA.htm';

// 加载远程HTML内容
$htmlString = file_get_contents($targetUrl);
if (!$htmlString) {
    die('无法加载目标页面,请检查网络或URL是否正确');
}

// 初始化DOM文档
$dom = new DOMDocument();
$dom->loadHTML($htmlString);
libxml_clear_errors(); // 清除解析错误

// 初始化XPath
$xpath = new DOMXPath($dom);

// 通过ID查询目标元素(兼容任意标签,若确认是td可改为//td[@id="hiOutsideTemp"])
$tempElement = $xpath->query('//*[@id="hiOutsideTemp"]')->item(0);

// 提取温度值并处理
if ($tempElement) {
    $hiOutsideTemp = trim($tempElement->nodeValue);
    echo "室外温度:{$hiOutsideTemp}";
    // 可将$hiOutsideTemp嵌入自有页面的任意位置
} else {
    echo '未找到目标温度元素,请检查页面结构是否变更';
}
?>

关键细节说明

  • XPath查询优化://*[@id="hiOutsideTemp"]会匹配页面中所有ID为hiOutsideTemp的元素,不管它是什么标签(td、span等),比指定标签的查询更灵活。如果确认目标元素是td标签,可以改成//td[@id="hiOutsideTemp"]。
  • 错误处理:添加了file_get_contents的判断,避免页面加载失败时直接报错;同时检查元素是否存在,防止后续调用nodeValue时出现致命错误。
  • 兼容性备选方案:如果你的服务器禁用了allow_url_fopen(很多虚拟主机默认禁用),可以用cURL替代file_get_contents:
// cURL替代file_get_contents的代码段
$ch = curl_init($targetUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$htmlString = curl_exec($ch);
curl_close($ch);

自有页面展示示例

获取到$hiOutsideTemp后,可直接嵌入自有页面的HTML结构中:

<div class="weather-card">
    <h3>实时室外温度</h3>
    <p class="temp-value"><?php echo $hiOutsideTemp; ?></p>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:48:11