警告:非法的字符串偏移量"content"



作为一名图形设计师,我对PHP代码并不太了解。

警告:908 行webaddress/class-vc前端编辑器.php中的非法字符串偏移量'content'

我正在使用Visual Composer的前端编辑器,在检查代码时不断出现此错误,我得到以下信息:

);
if ( false !== WPBMap::getParam( $s, 'content' ) ) {
$shortcode['attrs']['content'] = $s 'content';
}

我精通HTML、CSS和Scripter,但我希望有高级PHP技能的人能够回答我的问题。

如果我在Dreamweaver中打开文件试图诊断错误,我会得到以下信息:

第908行:语法错误,意外的带引号字符串(T_CONSTANT_ENCAPSED_string)

此代码出了什么问题,导致它抛出此错误消息?

您在以下位置错过了.字符:

$shortcode['attrs']['content'] = $s.'content';

这是关于字符串运算符的手册。

这段代码似乎至少有两个错误。有关说明,请参阅下面的列表项。

  1. 问题标题中的错误:

    警告:非法的字符串偏移量'content'

    这来自于对在指定索引处没有偏移量的数组进行索引。

    $shortcode['attrs']['content'] = $s 'content';
    

    如果$shortcode['attrs']不是数组或在索引"content"处没有元素,则会发生此错误。您没有解释$shortcode的来源,但避免此错误的一种方法是使用array_key_exists():检查数组是否在content处有索引

    if (array_key_exists('content', $shortcode['attrs'])) {
    $shortcode['attrs']['content'] = $s 'content';
    }
    else {
    //handle case where index isn't defined
    }
    

    为了更安全,最好确保这是一个带有is_array()的数组:

    if (is_array($shortcode['attrs']) && array_key_exists('content', $shortcode['attrs'])) {
    
  2. 你提到的第二个错误:

    第908行:语法错误,意外的带引号字符串(T_CONSTANT_ENCAPSED_string)

    之所以出现这种情况,是因为在赋值的右侧(同一行),变量$s位于字符串文字(即'content')之前,两者之间没有运算符。我不知道你到底想对这两个操作数做什么,但也许它们应该连接起来。这可以通过字符串运算符dot(即.)来实现。

    $shortcode['attrs']['content'] = $s . 'content';
    

对于来这里问这个问题的人:

  1. 正确的行应该是$shortcode['attrs']['content'] = $content;

  2. 该错误是由于VC没有检索regex中的内容,在以下几行之前:

    $shortcode = array(
    'tag' => $s,
    'attrs_query' => $found[3][ $index ],
    'attrs' => shortcode_parse_atts( $found[3][ $index ] ), //here
    'id' => $id,
    'parent_id' => $parent_id,
    );
    

相关内容

  • 没有找到相关文章

最新更新