2011-10-07 52 views
4
<?php 
include 'db_connect.php'; 
$q = mysql_real_escape_string($_GET['q']); 
$arr = explode ('+',$q); 

foreach($arr as $ing) 
{ 
echo $ing; 
echo "<br/>"; 
} 

mysql_close($db); 

?> 

呼叫:回聲新線在PHP

findByIncredients.php?q=Hans+Wurst+Wurstel 

源碼HTML:

Hans Wurst Wurstel<br/> 

爲什麼只有一個換行符?

+0

請使用的print_r($ ARR);在這裏顯示數組 – Dezigo

+1

使用空格而非'+'分解。 –

回答

4

+ s在URL中是urlencoded空格。那麼php在變量中看到的是「Hans Wurst Wurstel」。您需要通過空間分割 '',而不是+

arr = explode (' ',$q); 
1

「+」在URL解碼時轉換爲空格。 您可能想要將您的字符串作爲str1-str2-str3傳遞給get參數。

1

嘗試:

<?php 
include 'db_connect.php'; 
$q = mysql_real_escape_string($_GET['q']); 
$arr = explode (' ',$q); 

foreach($arr as $ing) 
{ 
echo $ing; 
echo "<br/>"; 
} 

mysql_close($db); 

?> 
0

Hans+Wurst+Wurstel是網址轉義的查詢字符串。 php頁面可能會在未轉義時處理它(在這種情況下,所有+將被轉換爲空格)。您應該根據字符串爲當前選擇explode的分隔符。如果您不知道字符串(或任何類型的變量)的外觀如何,您可以使用print_r()作爲原始打印。

0

簡單。雖然標準的RFC 3986 url編碼會將空格「」編碼爲「%20」,但由於歷史原因,它也可以編碼爲「+」。當PHP解析查詢字符串時,它會將「+」字符轉換爲空格。

這也是雙方存在說明:

  • urlencode:什麼PHP內部使用它等同,將「」轉換爲「+」。
  • rawurlencode:符合RFC的編碼器會將「」轉換爲「%20」。

我假設你想通過空間explode。如果你真的想編碼一個「+」字符,你可以使用「%2B」,這是rawurlencode版本,並將始終工作。

(EDIT)

相關問題: