【问题标题】:How do I escape characters in href of anchor tag如何在锚标记的href中转义字符
【发布时间】:2016-06-08 06:57:55
【问题描述】:

我想转义三个字符

  1. 单引号 (')
  2. 双引号 (")
  3. 反斜杠 ()

我的 href 值是 test.html?key="test' me'"&event=3

我想像在php 中那样通过调用addslashes function 来修复它

<a href="test.html?key="test' me'"&event=3">test</a>

注意:我需要一种动态的方法

【问题讨论】:

  • 请注意,addslashes 对于您需要执行的任何类型的转义几乎总是一个糟糕的解决方案。目标环境特定的功能通常要好得多。

标签: html addslashes


【解决方案1】:

获取数据并生成正确编码的查询字符串的 PHP 函数是 http_build_query。然后,您可以将其放入 URL 中,然后使用 htmlspecialchars 对其进行编码以将其插入到文档中。

<?php

    $base = "test.html";
    $query_data = Array(
        "key" => "\"test' me'\"",
        "event" => 3
    );
    $url = $base . "?" . http_build_query($query_data);
    $html_safe_url = htmlspecialchars($url);
?>

    <a href="<?= $html_safe_url ?>">test</a>

【讨论】:

    【解决方案2】:

    您必须对特殊字符进行 URL 编码。

    一个 " 会变成 %22

    A ' 会变成 %27

    A \ 会变成 %5C

    你的锚必须是

    test.html?key=%22test%27%20me%27%22&event=3
    

    有关 url 编码的更多信息,请访问http://www.w3schools.com/tags/ref_urlencode.asp

    【讨论】:

      【解决方案3】:

      可能对 URL 进行编码

      <a href="test.html?key=%22test'%20me'%22&event=3">test</a>
      

      w3schools查看这些 url 编码

      添加: var $key ="\"test'\""; var $event = "3"; print '<a href="test.html?key=' . urlencode($key) .'&event=' . urlencode($event) .'">test</a>';

      我不完全知道 php 字符串如何转义像“但我想 \”这样的特殊字符。

      【讨论】:

      • 我需要一种动态的方法
      • 编辑了答案。请检查 urlencode 函数和 rawurlencode。另外,如果 var $foo = "\"" 应该将双引号保留为字符串。我不是来自 php 背景。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      • 1970-01-01
      • 2015-09-23
      • 2020-10-13
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      相关资源
      最近更新 更多