2

例如:index.php?color=#c2c2c2

echo $_GET['color'];

这可能行不通,那怎么办?

4

3 回答 3

6

URL 编码您发送的内容。#,当 url 编码时,是%23.

在接收方,您只需要执行以下操作:

$color = urldecode($_GET['color']);

在 javascript 中进行 URL 编码:

var color = encodeURIComponent("#c2c2c2");
于 2013-09-20T17:37:49.743 回答
0

您只需要使用 . 转义#URL 中的%23。否则,服务器会将其解释为锚点(页面中的一个位置,服务器不需要担心),而不是查询字符串的一部分。所以只需像这样发送它:

index.php?color=%23c2c2c2

或者你可以在没有#明确它应该在那里的情况下发送它。

于 2013-09-20T17:38:15.503 回答
0

它应该可以正常工作。这里是测试代码:

<?php

echo "<div style='background-color: {$_GET['color']};padding: 1em; margin-bottom: 1em; '>";

echo $_GET['color'];   

echo "</div>";

?>

<form action="" method="get">

  <label>Color:</label>
    <input type="text" id="color" name="color" value="<?php echo $_GET['color']; ?>" />

    <input type="submit" value="Show Color" /> 
</form>

注意不需要解码或编码任何东西。浏览器处理编码,PHP 知道解码。

如果关心的是如何手动创建 URL,则需要另一种方法。您可以考虑允许颜色是没有哈希标记的十六进制值,并测试它是否是有效的颜色值:

 $valid_color = (ctype_xdigit($_GET['color'] && strlen($_GET['color']) < 7);
 if($valid_color) $color = "#" . $_GET['color'];
于 2013-09-20T17:48:40.570 回答