2014-12-08 42 views

回答

2

首先,我將與任何不同的符號取代它之前,我通過它的鏈接:

例如:

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

然後在頁面中。php我會回到原來的符號:

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

此方法將只會取代所有在url中有符號的產品。當你得到它時,它會檢查產品的名稱是否有符號。

我希望你明白,它可以幫助

+0

取代所有空白!太棒了!非常感謝你! – alisa 2014-12-08 10:55:55

0

更換+與它的表示%2B

+0

使用'urlencode'怎麼更換呢? – alisa 2014-12-08 07:37:06

+0

'str_replace(「+」,「%2B」,$ url)' – Justinas 2014-12-08 07:40:58

+0

它用+替換所有空格。 – alisa 2014-12-08 07:43:14

0

請參考下面的網址,它已經answerd在計算器,

PHP - Plus sign with GET query

如果你讀了bug報告你的全部會看到對RFC 2396的引用。其中指出+是保留。 PHP將未編碼的+符號翻譯成空格是正確的。

將密文返回給用戶時,可以使用urlencode()密文。因此,當用戶提交密文解密時,你可以urldecode()它。如果它通過GET字符串進入,PHP會自動爲您執行此操作。

底線:的+必須提交給PHP作爲編碼值:%2B

0

你可以讀出$ _ SERVER [ 「QUERY_STRING」]

preg_match_all('/(\w+)=([^&]+)/', $_SERVER["QUERY_STRING"], $set); 
$_GET = array_combine($set[1], $set[2]); 
+0

在哪裏寫這個,在page.php或通過之前? – alisa 2014-12-08 07:31:00

+0

未定義的索引查詢字符串 – alisa 2014-12-08 07:36:32

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']); 
?> 
解碼210

$_GET的變量認爲是+作爲空間。

URL編碼增加%2B對空間。

然後用字符串替換進行解碼。

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

+0

你可以使用我的代碼在上面。因爲解釋它有點複雜 – alisa 2014-12-08 07:37:43

+0

請不要在'echo'中創建urlencode或str_replace的例子,而是在'GET'本身中。 – alisa 2014-12-08 07:41:02

1

可能幫助

echo isset($_GET['product']) ? urlencode($_GET['product']) : 'Product Not Found'; 
+0

它用+ – alisa 2014-12-08 07:53:59