PHP使用substr截取$span最后9位字符出现空白页问题求助
问题原因
- 代码中每次拼接匹配到的span内容时,都在末尾追加了
<br>标签,导致$span的末尾存在多余HTML标签,而非你预期的热量数值相关字符 $span末尾同时存在大量空白字符,直接取倒数9位时,大概率取到的是空白字符、<br>标签的组合,浏览器渲染这类内容时会自动合并空白和换行,最终看起来就是空白- 补充:如果是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
相关产品推荐
相关产品推荐

