如何在php中为html属性提供引号

时间:2017-04-21 09:33:45

标签: php html

echo "<tr onclick='window.location=("www.google.com")'>
      <td>something</td>
      <td>something</td>
    </tr>"

我已经编写了这样的代码,但它不起作用。我不知道在哪里放单引号和双qoutes。 我不知道如何在php中编写onclick 请建议我

1 个答案:

答案 0 :(得分:4)

避免将echo用于HTML。退出PHP模式并进入输出模式。

避免使用嵌套的文字值。将每种语言编写为单独的变量,使用合适的转义函数添加所需的引号,然后将它们放在一起。

通过将所有内容保持为单独的图层并一次处理一个图层,并通过使用函数而不是尝试手动编写转义,您可以更轻松地维护它们。

$url = "http://www.google.com";
$js_string_literal_url = json_encode($url);
$js = "window.location = $js_string_literal_url";
$html_safe_js = htmlspecialchars($js);

?>
<tr onclick="<?php echo $html_safe_js; ?>">
  <td>something</td>
  <td>something</td>
</tr>

那就是说,你也应该避免:

  • 完全依赖JS的功能
  • onclick属性

编写有效的HTML,然后使用JS进行增强。

如果你想链接某个地方:使用链接:

<tr>
  <td><a href="http://www.google.com">something</a></td>
  <td>something</td>
</tr>

如果要使该链接对整个表行起作用(使用JS),请绑定一个查找单击的事件侦听器,然后找到单击该行的第一个链接。

document.querySelector("table").addEventListener(follow_link_in_row);
function follow_link_in_row(event) {
    var table_row = event.target;
    while (table_row && table_row.tagName.toLowerCase() !== "tr") {
        table_row = table_row.parentNode;
    }
    if (!table_row) { return; }
    var link = table_row.querySelector("a[href]");
    var url = link.href;
    window.location = url;
}