You need to enable JavaScript to run this app. PHP使用substr截取$span最后9位字符出现空白页问题求助
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用substr截取$span最后9位字符出现空白页问题求助

问题原因

  1. 代码中每次拼接匹配到的span内容时,都在末尾追加了<br>标签,导致$span的末尾存在多余HTML标签,而非你预期的热量数值相关字符
  2. $span末尾同时存在大量空白字符,直接取倒数9位时,大概率取到的是空白字符、<br>标签的组合,浏览器渲染这类内容时会自动合并空白和换行,最终看起来就是空白
  3. 补充:如果是UTF-8多字节编码场景,原生substr按字节截取的逻辑如果碰到多字节字符截断也可能出现异常,不过本次问题核心是末尾多余标签和空白。

修复方案

先清理$span末尾多余的空白、HTML标签后再做截取,示例代码如下:

$span = "";
foreach($html->find('span') as $element1){
    if (strpos($element1->outertext, 'kcal') !== false){
        // 不需要换行的话可以直接省略<br>拼接
        $span .= $element1->outertext;
    }
}
// 先移除所有HTML标签,再清理末尾空白
$clean_span = rtrim(strip_tags($span));
// 再截取最后9位
echo substr($clean_span, -9);

如果确实需要保留拼接时的<br>用于其他展示场景,也可以单独做临时清理再截取:

$span = "";
foreach($html->find('span') as $element1){
    if (strpos($element1->outertext, 'kcal') !== false){
        $span .= $element1->outertext.'<br>';
    }
}
// 临时清理标签和空白用于截取
$tmp_span = rtrim(strip_tags($span));
echo substr($tmp_span, -9);

修复后即可拿到你预期的最后9个字符,对应你提供的$span内容,输出结果为504 kcal。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 06:39:01