2014-04-29 62 views
0

URL參數正在興建樓宇的URL和參數值(在$ url變量),就像這樣:PHP - 基於用戶輸入的值在數組

$query = trim($_GET["Query"]); 
if (!empty($query)) { 
$url = "results.php?"; 
$url .= "&Query=$query"; 
} 
$store = $_GET["Store"]; 
if (!empty($store)) { 
$url .= "&Store=$store"; 
} 

這些URL參數(內置於$網址變量)將用於解析XML文檔。然後最終將顯示搜索結果。

<product category="Tablet"> 
<name>ipad-1</name> 
<store>Best Buy</store> // problem will later occur when store element has two words 
</product> 

<product category="Tablet"> 
<name>ipad-2</name> 
<store>Amazon</store> 
</product> 

生成多頁搜索結果,並在此創建頁碼鏈接。

for($i=0; $i<$searchResultsFound; $i++) { 
if ($i == $a_condition) { 
//This array below is where the probably likely is 
$pageNumberLinks[] = "<a href=".$url."&firstSearchResult=".$firstSearchResultValue."&lastSearchResult=".$lastSearchResultValue.">".$pageNumberLink_i . "</a>"; 
}} 

使用此foreach循環顯示頁碼鏈接。

foreach ($pageNumberLinks as $PageNumberLinks) { 
echo $PageNumberLinks . " "; 
} 

頁碼鏈接工作正常時,存儲參數(從XML元素拉到名爲「存儲」)只有一個字(IE亞馬遜),並在地址欄中的URL看起來像這樣:

results.php?&Query=ipad&store=Amazon&firstSearchResult=10&lastSearchResult=20 

然而,當存儲參數有兩個詞(IE百思買),該URL只顯示第一個字「最佳」和切斷在地址欄中的URL的其餘部分,看起來像這樣:

results.php?&Query=ipad&store=Best 

和源代碼如下所示:

<a href=results.php?&Query=ipad&store=Best&firstSearchResult=10&lastSearchResult=20>2</a> 

我的猜測是,當在for循環插入陣列上方的頁面鏈接數不正確編碼。有沒有人注意到有什麼不正確的編碼在這裏:

$pageNumberLinks[] = "<a href=".$url."&firstSearchResult=".$firstSearchResultValue."&lastSearchResult=".$lastSearchResultValue.">".$pageNumberLink_i . "</a>"; 

作爲一個方面說明,當編碼這樣的URL正常工作:

<a href="<?php echo $url; ?>&Store=<?php echo $store; ?>">Anchor text</a> 

回答

0

您需要使用urlencodehttp_build_query使生活更輕鬆。仍然做所有檢查什麼參數是在正確的格式,但使用這些功能之一建立實際查詢

檢查手冊頁的這兩個功能,並決定哪一個更適合您的需求