我有一个这样的链接:
http://domain.com/page.php?product=brown+rice
然后在页面.php页面中,我得到了产品:
$product = $_GET['product'];
<?php echo $product; ?>
但它只打印:糙米没有+
如何在获取方法中获取 +?
首先,在链接中传递它之前,我将用任何不同的符号替换它:
例如:
http://domain.com/page.php?product='.str_replace("+","_",$obj->items).'"
然后在页面中.php我将它转回原始符号:
$product= str_replace("_","+",$_GET['product']);
此方法只会替换网址中带有+符号的所有产品。当您获得它时,它将检查产品名称是否具有符号。
我希望你能理解,这有帮助
首先对
URL 进行编码,然后使用
urlencode() 和 urldecode()
<?php
$_GET['url'] = '123abc+456';
echo $_GET['url'];
echo "<br/>";
echo $_GET['url'] = urlencode($_GET['url']);
echo "<br/>";
echo str_replace('%2B', '+', $_GET['url']);
?>
$_GET
变量将+
视为一个空间。
URL 编码会针对空格添加%2B
。
然后用字符串替换对其进行解码。
演示:http://codepad.org/67QVYHY3
可能会有所帮助
echo isset($_GET['product']) ? urlencode($_GET['product']) : 'Product Not Found';
请参考
下面的网址,它已经在stackoverflow中回答了,
PHP - 使用 GET 查询加号
如果您阅读该错误报告的全部内容,您将看到对 RFC 2396 的引用。其中指出 + 是保留的。PHP 将未编码的 + 符号转换为空格是正确的。
您可以在将密文返回给用户时使用 urlencode() 密文。因此,当用户提交密文进行解密时,您可以urldecode()它。如果 PHP 也通过 GET 字符串传入,它会自动为您执行此操作。
底线:+ 必须作为编码值提交给 PHP:%2B
//page 1
$criteria = urlencode("brown+rice");
$URL = "http://example.com/page.php?product={$criteria}";
//page 2
$product = $_GET['product'];
echo $product;
将+
替换为它的表示%2B
你可以读出 $_SERVER["QUERY_STRING"]
preg_match_all('/('w+)=([^&]+)/', $_SERVER["QUERY_STRING"], $set);
$_GET = array_combine($set[1], $set[2]);
只需写http://example.com/page.php?product=brown%2Brice
%2B 更改为加号,因为 B2(十六进制)是 ASCII 表中的"+"