符号无法在GET php中打印

时间:2014-12-08 07:16:42

标签: php

我有这样的链接:

http://domain.com/page.php?product=brown+rice

然后在page.php页面中我获取产品:

 $product = $_GET['product'];



 <?php echo $product; ?>

但它只打印:没有+

的糙米

如何获取get方法中的+?

7 个答案:

答案 0 :(得分:2)

首先,在将其传递给链接之前,我将用任何不同的符号替换它:

例如:

     http://domain.com/page.php?product='.str_replace("+","_",$obj->items).'"

然后在page.php中我将其转回原始符号:

  $product= str_replace("_","+",$_GET['product']);

此方法仅替换网址中包含+符号的所有产品。当你获得它时,它将检查产品的名称是否有符号。

我希望你了解并帮助

答案 1 :(得分:1)

第一个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的变量将+视为空格。

网址编码为空格添加%2B

然后用字符串替换解码它。

演示:http://codepad.org/67QVYHY3

答案 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]);