繁体   English   中英

回声PHP中的新行

[英]Echo new line in PHP

<?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

源代码HTML:

Hans Wurst Wurstel<br/>

为什么只有一个换行符?

URL中的+ s是urlencoded空格。 所以php在变量中看到的是“Hans Wurst Wurstel”。 你需要按空格分割,而不是+

arr = explode (' ',$q);

“+”在URL解码时转换为SPACE。 您可能希望在get参数中将字符串作为str1-str2-str3传递。

尝试:

<?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);

?>

Hans+Wurst+Wurstel是url转义查询字符串。 一旦未转义,php页面可能会处理它(在这种情况下,所有+ s将被转换为空格)。 您应该根据当时的字符串选择分隔符进行explode 如果您不知道字符串(或任何类型的变量)的外观,可以使用print_r()作为原始打印。

简单。 虽然标准的RFC 3986 url编码会将空格“”编码为“%20”,但由于历史原因,它也可以编码为“+”。 当PHP解析查询字符串时,它会将“+”字符转换为空格。

两者的存在也说明了这一点:

  • urlencode :相当于PHP内部使用的内容,将“”转换为“+”。
  • rawurlencode :符合RFC的编码器,将“”转换为“%20”。

我假设你想要通过太空explode 如果你真的想编码一个“+”字符,你可以使用“%2B”,这是rawurlencode版本,并将始终有效。

(编辑)

相关问题:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM