解决Divi主题builder目录functions.php中trim()参数缺失报错问题
问题解答
报错原因相关
- 直接报错原因就是
trim()未传参导致:PHP的trim()是字符串处理函数,强制要求传入至少1个待处理的字符串参数,空参数调用必然触发该警告,和$value是否为空无关——代码在走到报错行之前已经做了非空判断,不会出现空值进入该逻辑分支的情况。 - PHP不支持你理解的这种链式调用:和JavaScript字符串可以直接调用实例方法不同,PHP原生的字符串处理函数都是全局函数,不存在
substr(...).trim()这种链式生效的语法,你想对substr的返回值做去空白处理,正确写法是trim( substr(...) )。 - 原代码该行存在两个语法错误:除了
trim()未传参之外,substr( $value, 1, $value_length )的起始索引也写错了,要去掉末尾的!important只需要从字符串开头截取前$value_length位即可,起始位写1会误删第一个字符。
功能猜测验证
你的猜测完全正确,这个et_pb_get_value_unit函数的作用就是提取CSS属性值的单位,逻辑流程是:
- 优先判断值末尾是否带
!important,如果有就先去除这部分内容 - 依次匹配值末尾1/2/3位字符是否为合法的CSS单位列表中的值
- 匹配到对应单位就返回,匹配失败返回默认单位
px
PHP调试工具说明
类似JS console.log的调试方式有以下几种:
- 基础打印:用
var_dump($变量名)或者print_r($变量名)可以直接输出变量的类型和值,外层套<pre>标签可以格式化输出结构,更易读 - 日志打印:如果不想在页面输出内容,可以用
error_log(print_r($变量名, true))把变量内容写入PHP运行日志,和console.log打在控制台的逻辑一致 - 进阶调试:本地开发环境可以安装Xdebug扩展,支持断点调试,运行时可以查看所有变量的实时值
修复方案
把报错行替换为以下代码即可:
$value = trim( substr( $value, 0, $value_length ) );
内容的提问来源于stack exchange,提问作者Agent Zebra
相关产品推荐
相关产品推荐

