0

我正在尝试将 google 事件跟踪添加到 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'])并最终替换'Apply'fm_form_the_title()而不是破坏我的网站。

4

4 回答 4

3

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

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';

}
于 2012-04-14T17:30:03.397 回答
1

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

 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().'" '.
            '  />
         ';
于 2012-04-14T17:08:15.890 回答
1

如何简单化这个

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';
于 2012-04-14T17:07:14.970 回答
0

尝试

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(). '" '.
' />';
于 2012-04-14T17:11:44.667 回答