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

升级Statamic后explode接收SimpleXMLElement参数报错如何解决

报错原因
  • simplexml_load_string()返回的SimpleXMLElement对象通过数组下标读取属性时,返回值为SimpleXMLElement类型而非原生字符串,不符合explode()函数要求第二个参数为字符串的输入约束
  • 若处理的SVG文件没有定义viewBox属性,$svgObj['viewBox']会返回null,也会触发类型错误
  • 升级Statamic后报错是因为新版本默认开启了更严格的PHP类型校验,旧版本中隐式类型转换会被静默忽略,不会抛出明确错误
修复方案

替换原代码中报错行及后续的viewBox取值逻辑,增加类型转换和合法性校验即可:

// 校验viewBox属性是否存在
if (!isset($svgObj['viewBox'])) {
    return;
}
// 强制将SimpleXMLElement属性转为原生字符串
$viewBoxStr = (string) $svgObj['viewBox'];
$viewBox = explode(' ', $viewBoxStr);
// 额外校验viewBox格式合法性,避免后续下标越界
if (count($viewBox) < 4) {
    return;
}
$viewBoxWidth = intval($viewBox[2]);
$viewBoxHeight = intval($viewBox[3]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:45:04