作为一名图形设计师,我对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';
这是关于字符串运算符的手册。
这段代码似乎至少有两个错误。有关说明,请参阅下面的列表项。
-
问题标题中的错误:
警告:非法的字符串偏移量'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'])) {
-
你提到的第二个错误:
第908行:语法错误,意外的带引号字符串(T_CONSTANT_ENCAPSED_string)
之所以出现这种情况,是因为在赋值的右侧(同一行),变量
$s
位于字符串文字(即'content'
)之前,两者之间没有运算符。我不知道你到底想对这两个操作数做什么,但也许它们应该连接起来。这可以通过字符串运算符dot(即.
)来实现。$shortcode['attrs']['content'] = $s . 'content';
对于来这里问这个问题的人:
-
正确的行应该是
$shortcode['attrs']['content'] = $content;
-
该错误是由于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, );