例如:index.php?color=#c2c2c2
echo $_GET['color'];
这可能不起作用,怎么样?
答案 0 :(得分:6)
网址对您发送的内容进行编码。当网址编码时,#
为%23
。
在接收方,你只需要这样做:
$color = urldecode($_GET['color']);
使用javascript进行网址编码:
var color = encodeURIComponent("#c2c2c2");
答案 1 :(得分:0)
您只需要使用#
转义网址中的%23
即可。否则,服务器将其解释为 anchor (页面中的位置,服务器不需要担心)而不是查询字符串的一部分。所以就这样发送:
index.php?color=%23c2c2c2
或者你总是可以在没有#
的情况下发送它,如果它应该在那里是明确的。
答案 2 :(得分: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'];