解析 trim() 需要至少 1 个参数,0 在 divi 函数文件中给出

Resolving trim() expects at least 1 parameter, 0 given in divi functions file

在用 divi 制作的 wordpress 网站中,divi 主题中的 functions.php 文件包含 builder 文件夹,我在该行遇到间歇性错误:

$value = substr( $value, 1, $value_length ) . trim();

错误显示 Warning: trim() expects at least 1 parameter, 0 given

这是因为里面什么都没有吗trim?但是最后像这样链接它应该指的是它所链接的内容,对吗?所以 $valuesubstr。这是否意味着 $value 只是没有给出?或者,当您得到 substr 时,那里就没有其他东西了?

很想用 javascript 的 console.log 看看现在周围到底有什么 :D 。是否有 php 等价物?或者某种用于开发工具的 php 插件,我可以在任何给定时刻看到变量?

有人知道这里的问题是什么吗?我什至不确定这段代码现在做了什么,我猜是与在某些文本上设置 css px 值有关...,并删除 !important 属性?

if ( ! function_exists( 'et_pb_get_value_unit' ) ) :
    /**
     * Get unit of given value
     *
     * @param string $value string with unit.
     * @param string $default_unit default unit.
     *
     * @return string unit name
     */
    function et_pb_get_value_unit( $value, $default_unit = 'px' ) {
        $value                   = isset( $value ) ? $value : '';
        $valid_one_char_units    = array( '%', 'x' );
        $valid_two_chars_units   = array( 'em', 'px', 'cm', 'mm', 'in', 'pt', 'pc', 'ex', 'vh', 'vw', 'ms' );
        $valid_three_chars_units = array( 'deg', 'rem' );
        $important               = '!important';
        $important_length        = strlen( $important );
        $value_length            = strlen( $value );

        if ( '' === $value || is_numeric( $value ) ) {
            return $default_unit;
        }

        if ( substr( $value, ( 0 - $important_length ), $important_length ) === $important ) {
            $value_length = $value_length - $important_length;
            $value        = substr( $value, 1, $value_length ) . trim();
        }

        if ( in_array( substr( $value, -3, 3 ), $valid_three_chars_units, true ) ) {
            return substr( $value, -3, 3 );
        }

        if ( in_array( substr( $value, -2, 2 ), $valid_two_chars_units, true ) ) {
            return substr( $value, -2, 2 );
        }

        if ( in_array( substr( $value, -1, 1 ), $valid_one_char_units, true ) ) {
            return substr( $value, -1, 1 );
        }

        return $default_unit;
    }
endif;

像这样的链接是其他语言的一个特性(比如 JavaScript),但它 不是 PHP 的一个特性。如其所写,您将“连接 'trimmed null'”到值的末尾,这实际上没有意义。

查看 trim() 函数文档 - string 参数是必需的,因此它知道 trim.

的内容

如果你想像那样“链接”,你实际上需要像这样用 trim 包含值:

$value = trim( substr( $value, 1, $value_length ) );

就 PHP 而言,您可能会看到类似“嵌套”的“链接”函数。

就代码的作用而言,这是一种从值返回单位类型的相对复杂的方式 - 可能是为了查看它是否为 rempx% - 等用于其他地方的其他计算。它可以简化很多(也许是带有正则表达式的单行),但这超出了这个问题的范围