0

我正在尝试在 html 中执行查询字符串。我要传递的字符串是“Book Cover”。但我只设法得到书。我该怎么做呢?

下面是我的代码:

    <a href=book.php?category=Book Cover>Book Cover</a>
4

4 回答 4

6

您需要对所有查询字符串变量进行编码,例如使用rawurlencode / rawurldecode

<a href="book.php?category=<?=rawurlencode('Book Cover')?>">Book Cover</a>

在 PHP 中:

$category = rawurldecode($_POST['category']);
于 2013-04-10T13:46:33.180 回答
2

在 HTML 中,值停在空格处:

<a href=book.php?category=Book Cover>Book Cover</a>
                              ^

如果要在 HTML 中的值内包含空格,则需要添加引号:

<a href="book.php?category=Book Cover">Book Cover</a> 
        ^                            ^

在 HTML 中,单引号和双引号都是允许的。

现在值本身也有问题:

book.php?category=Book Cover
                      `- URL stops here.

这是一个相对 HTTP URL,对于任何 HTTP URL,空格字符都是一个特殊值。它通常不能成为 URL 的一部分,因此您需要对其进行编码。这可以与 HTTP URL 中的任何其他特殊字符一样使用三元组编码/百分比编码替换字符的二进制值与它们的十六进制数:

book.php?category=Book%20Cover

对于您拥有的空间,历史上它甚至是一个特例,您也可以用加号对其进行编码。

后一个问题通常由用户代理处理,但 HTML 中的引号是必需的,否则价值会被削减。

将 HTML 中的属性值放在(双)引号内通常是一种很好的做法。所以我建议你这样做。

于 2013-04-10T13:49:37.877 回答
1

为什么不在编码前转换为 UTF-8?

urlencode(utf8_encode($string));
于 2013-04-10T13:52:37.670 回答
0

看起来你缺少双引号

<a href="book.php?category=Book Cover">Book Cover</a>
于 2013-04-10T13:46:28.057 回答