<?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);
?>
通话:
findByIncredients.php?q=Hans+Wurst+Wurstel
SourceCode HTML:
Hans Wurst Wurstel<br/>
为什么只有一个NewLine?
答案 0 :(得分:4)
+ s是urlencoded空格。所以php在变量中看到的是“Hans Wurst Wurstel”。您需要按空格''拆分,而不是+
arr = explode (' ',$q);
答案 1 :(得分:1)
“+”在URL解码时转换为SPACE。 您可能希望在get参数中将字符串作为str1-str2-str3传递。
答案 2 :(得分: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);
?>
答案 3 :(得分:0)
Hans+Wurst+Wurstel
是网址转义的查询字符串。一旦未转义,php页面可能会处理它(在这种情况下,所有+
将被转换为空格)。您应该根据当时的字符串为explode
选择分隔符。如果您不知道字符串(或任何类型的变量)的外观,可以使用print_r()
作为原始打印。
答案 4 :(得分:0)
易。虽然标准的RFC 3986 url编码会将空格“”编码为“%20”,但由于历史原因,它也可以编码为“+”。当PHP解析查询字符串时,它会将“+”字符转换为空格。
这也可以通过两者的存在来说明:
我假设你想要explode
空格。如果你真的想编码一个“+”字符,你可以使用“%2B”,这是rawurlencode
版本,并且一直有效。
(编辑)
相关问题: