【问题标题】:Echo new line in PHP在 PHP 中回显新行
【发布时间】:2011-10-07 11:50:21
【问题描述】:
<?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/>

为什么只有一个换行符?

【问题讨论】:

  • 请使用 print_r($arr);在此处显示数组
  • 使用空间展开,而不是+

标签: php


【解决方案1】:
URL 中的

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

arr = explode (' ',$q);

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      试试:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

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

          我假设你想explode 按空格。如果你真的想编码一个“+”字符,你可以使用“%2B”,它是rawurlencode 版本,并且永远可以工作。

          (编辑)

          相关问题:

          【讨论】:

            猜你喜欢
            • 2020-05-21
            • 2018-05-09
            • 1970-01-01
            • 1970-01-01
            • 2017-01-17
            • 1970-01-01
            • 2014-01-04
            • 1970-01-01
            • 2010-09-20
            相关资源
            最近更新 更多