如何转义锚标记的 href 中的字符

How do I escape characters in href of anchor tag

我想转义三个字符,这些是

  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>

注意:我需要一种动态的方式来做到这一点

编码 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 字符串如何转义像 " 这样的特殊字符,但我想 \" 会起作用。

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

A " 会变成 %22

A ' 会变成 %27

A \ 会变成 %5C

你的主播必须是

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

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

获取数据并生成正确编码的查询字符串的 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>