php html中的查询字符串(中间有空格)


Query string (with space in between) in php html

我试图在html中做一个查询字符串。我想传递的字符串是"Book Cover"。但我只找到了Book。我该怎么做呢?

下面是我的代码:
    <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>