我有这样的链接:
http://domain.com/page.php?product=brown+rice
然后在page.php页面中我获取产品:
$product = $_GET['product'];
<?php echo $product; ?>
但它只打印:没有+
如何获取get方法中的+?
答案 0 :(得分:2)
首先,在将其传递给链接之前,我将用任何不同的符号替换它:
例如:
http://domain.com/page.php?product='.str_replace("+","_",$obj->items).'"
然后在page.php中我将其转回原始符号:
$product= str_replace("_","+",$_GET['product']);
此方法仅替换网址中包含+符号的所有产品。当你获得它时,它将检查产品的名称是否有符号。
我希望你了解并帮助
答案 1 :(得分:1)
第一个URL编码,然后使用
进行解码<?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
的变量将+
视为空格。
网址编码为空格添加%2B
。
然后用字符串替换解码它。
答案 2 :(得分:1)
可能会有所帮助
echo isset($_GET['product']) ? urlencode($_GET['product']) : 'Product Not Found';
答案 3 :(得分:1)
//page 1
$criteria = urlencode("brown+rice");
$URL = "http://example.com/page.php?product={$criteria}";
//page 2
$product = $_GET['product'];
echo $product;
答案 4 :(得分:0)
将+
替换为其代表%2B
答案 5 :(得分:0)
请参考以下网址,它已在stackoverflow中回答,
PHP - Plus sign with GET query
如果您将阅读该错误报告的全部内容,您会看到对RFC 2396的引用。其中表示+ 保留。 PHP将未编码的+符号转换为空格是正确的。
将clenhertext返回给用户时,可以使用urlencode()。因此,当用户提交用于解密的密文时,您可以urldecode()它。如果它通过GET字符串进入,PHP将自动为您执行此操作。
底线: +必须以编码值的形式提交给PHP:%2B
答案 6 :(得分:0)
你可以读出$ _SERVER [&#34; QUERY_STRING&#34;]
preg_match_all('/(\w+)=([^&]+)/', $_SERVER["QUERY_STRING"], $set);
$_GET = array_combine($set[1], $set[2]);