我正在尝试在 html 中执行查询字符串。我要传递的字符串是“Book Cover”。但我只设法得到书。我该怎么做呢?
下面是我的代码:
<a href=book.php?category=Book Cover>Book Cover</a>
您需要对所有查询字符串变量进行编码,例如使用rawurlencode / rawurldecode
<a href="book.php?category=<?=rawurlencode('Book Cover')?>">Book Cover</a>
在 PHP 中:
$category = rawurldecode($_POST['category']);
在 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 中的属性值放在(双)引号内通常是一种很好的做法。所以我建议你这样做。
为什么不在编码前转换为 UTF-8?
urlencode(utf8_encode($string));
看起来你缺少双引号
<a href="book.php?category=Book Cover">Book Cover</a>