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

如何用PHP Simple HTML DOM Parser读取class为price promo的div中的价格?

解决PHP Simple HTML DOM Parser提取目标价格的问题

咱们来一步步拆解你遇到的问题:你想从带price和promo类的div里提取483.33,但之前的代码没生效,主要是几个小细节没处理对,调整一下就能解决:

问题1:选择器逻辑错误

你用的div.price, div.promo是或的逻辑——匹配所有带price类的div,或者所有带promo类的div。但你的目标元素是同时拥有这两个类的div,正确的选择器应该是div.price.promo(用点连接,代表“同时包含这两个类”)。

问题2:循环用法多余

当你在find()里传入第二个参数0时,它返回的是单个匹配元素,不是数组,所以完全不需要用foreach遍历,直接调用元素的方法就行。

问题3:提取纯数字价格(可选)

如果只需要483.33而不是带单位的完整文本,还需要对plaintext做进一步处理,去掉后面的单位部分。

修正后的完整代码

<?php
// 假设$html已经是加载好的Simple HTML DOM对象
$priceElement = $html->find('div.price.promo', 0);
if ($priceElement) {
    // 获取去空白后的完整文本(比如"483.33 zł netto")
    $fullPriceText = trim($priceElement->plaintext);
    // 提取纯数字价格
    $purePrice = preg_replace('/[^0-9.]/', '', $fullPriceText);
    echo $purePrice; // 输出483.33
}
?>

代码说明

  • div.price.promo精准定位到同时拥有两个类的目标div;
  • 先判断元素是否存在,避免空指针报错;
  • trim()去掉文本前后的多余空白;
  • 正则preg_replace('/[^0-9.]/', '', $fullPriceText)会过滤掉所有非数字和小数点的字符,只保留价格数值。

如果需要保留带单位的完整文本,直接输出$fullPriceText就可以啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:51:14