2012-07-23 44 views
0

我正在製作網站以瞭解代碼並正在製作搜索網站。搜索是$qURL中的處理和字符

$q = ucwords(mysql_real_escape_string(trim($_REQUEST['q']))); 

然後我試圖把一個鏈接到用戶可能想要搜索的其他單詞。不幸的是,如果一個單詞是「Example & Another Example」,$q只是「Example」,剩下的部分被遺漏了。在這個網址中,這個工作原理(如沒有被遺漏)示例+%26 +另一個+示例 但這不起作用示例%20 &%20另一個示例 。

我試過用str_replace替換所有的&amp%26,但它只是作了$q = null。有什麼問題?

這裏是我的代碼:

echo "<hr /><span><strong>Refine Search</strong><br/><br/>"; 
$result = mysql_query("SELECT * FROM subcat WHERE catnumber='1' LIMIT 0,10"); 
$subcaturl = str_replace("&amp;", "%26", $row['subcat']); 
while($row = mysql_fetch_array($result)) 
{ 
    echo "<a href='search.php?q=". $subcaturl ."'/>" . $row['subcat'] ."</a>"; 
    echo "<br />"; 
} 
+4

強制性參考解碼URL使用[mysqli_ *](http://php.net /manual/en/mysqli.real-escape-string.php)命令而不是mysql。 – Rhys 2012-07-23 16:27:13

+1

很好處理,Ryven,可能需要一個'PDO'條款:-) – Smandoli 2012-07-23 16:28:55

回答

2

嘗試urlencode

$subcaturl = urlencode($row['subcat']); 
+0

完美工作...謝謝 – infinity 2012-07-23 16:33:03

1

看一看進行urlencode/urldecode - 這將有助於這個問題。

0

PHP將把 '&' 作爲一個新的參數的開始。 爲了獲得'&'作爲q字符串的一部分,用戶提交的數據在被放入URL字符串之前需要轉義'&'。

你可以做到這一點作爲一個例子:

str_replace ('&", "-", $row['subcat']); 

您也可以嘗試編碼和

urlencode($row['subcat']); 
urldecode($row['subcat']);