例如:index.php?color=#c2c2c2
echo $_GET['color'];
这可能行不通,那怎么办?
URL 编码您发送的内容。#
,当 url 编码时,是%23
.
在接收方,您只需要执行以下操作:
$color = urldecode($_GET['color']);
在 javascript 中进行 URL 编码:
var color = encodeURIComponent("#c2c2c2");
您只需要使用 . 转义#
URL 中的%23
。否则,服务器会将其解释为锚点(页面中的一个位置,服务器不需要担心),而不是查询字符串的一部分。所以只需像这样发送它:
index.php?color=%23c2c2c2
或者你可以在没有#
明确它应该在那里的情况下发送它。
它应该可以正常工作。这里是测试代码:
<?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'];