“语法错误,意外T_CONSTANT_ENCAPSED_STRING” 将谷歌事件跟踪添加到 Wordpress 插件中


'syntax error, unexpected T_CONSTANT_ENCAPSED_STRING' Adding google event tracking to button in Wordpress Plugin

我正在尝试将谷歌事件跟踪添加到WordPress插件中。此插件中提交按钮的代码为:

{
        return "<input  type='"submit'" ".
                "name='"".fm_form_submit_btn_name()."'" ".
                "id='"".fm_form_submit_btn_id()."'" ".
                "class='"submit'" ".
                "value='"".fm_form_submit_btn_text()."'" ".
                "onclick='"".fm_form_submit_btn_script()."'" ".
                "  />'n";
    }

我正在尝试将谷歌分析跟踪代码onclick=_gaq.push(['_trackEvent', 'Form', 'Submit', 'Apply'])添加到上述块中,并最终'Apply'替换为返回表单标题的fm_form_the_title()

问题:无论我在插入跟踪代码块时使用哪种引号排列方式,我都会遇到错误"语法错误、意外T_CONSTANT_ENCAPSED_STRING"或"T_STRING",导致整个网站关闭。

编辑:上面的代码块工作,不需要简化,是一个更大的项目的一部分。我的问题是如何添加onclick=_gaq.push(['_trackEvent', 'Form', 'Submit', 'Apply'])并最终用fm_form_the_title()替换'Apply',而不会破坏我的网站。

以下内容是有效的,尽管在返回后使用它的代码可能会在参数、括号或单引号上引发错误。如果这不起作用,请查看返回后使用它的位置,并相应地转义特殊字符。

function yourfunc() {
  return "<input  type='"submit'" ".
    "name='"".fm_form_submit_btn_name()."'" ".
    "id='"".fm_form_submit_btn_id()."'" ".
    "class='"submit'" ".
    "value='"".fm_form_submit_btn_text()."'" ".
    "onclick='"_gaq.push(['_trackEvent', 'Form',".
    "'Submit', '".fm_form_the_title()."']);".
    fm_form_submit_btn_script()."'"/>'n";
}

尝试不要在传递给 _gaq.push 方法的数组中使用单引号。

function yourfunc() {
  return "<input  type='"submit'" ".
    "name='"".fm_form_submit_btn_name()."'" ".
    "id='"".fm_form_submit_btn_id()."'" ".
    "class='"submit'" ".
    "value='"".fm_form_submit_btn_text()."'" ".
    "onclick='"_gaq.push(['"_trackEvent'", '"Form'",".
    "'"Submit'", '"".fm_form_the_title()."'"]);".
    fm_form_submit_btn_script()."'"/>'n";
}

我必须同意下面的人的观点,尽管以下内容对于可读性和未来的支持都是最好的。

function yourfunc() {
  return '<input  type="submit" '.
    'name="'.fm_form_submit_btn_name().'" '.
    'id="'.fm_form_submit_btn_id().'" '.
    'class="submit" '.
    'value="'.fm_form_submit_btn_text().'" '.
    'onclick="_gaq.push(["_trackEvent", "Form",'.
    '"Submit", "'.fm_form_the_title().'"]); '.
    fm_form_submit_btn_script().'"/>'n';
}
如何

简单地用

return '<input  type="submit" '.
'name='"".fm_form_submit_btn_name()."'" ".
'id="'.fm_form_submit_btn_id().'"'.
'class="submit"'.
'value='"".fm_form_submit_btn_text().'"'.
'onclick="'.fm_form_submit_btn_script().'"'.
'  />'n';

既然您要转义引号以放入函数调用,为什么不使用单引号呢?

 return '<input  type="submit" '.
            'name="'.fm_form_submit_btn_name().'" '.
            'id="'.fm_form_submit_btn_id().'" '.
            'class="submit" '.
            'value="'.fm_form_submit_btn_text().'" '.
            'onclick="'.fm_form_submit_btn_script().'" '.
            '  />
         ';

试试

return '<input  type="submit" '.
'name='"".fm_form_submit_btn_name(). '" '.
'id="'.fm_form_submit_btn_id().'" '.
'class="submit" ".
'value="'.fm_form_submit_btn_text().'" '.
'onclick="'.fm_form_submit_btn_script(). '" '.
' />';