【问题标题】:php :: new line in textarea?php :: textarea 中的新行?
【发布时间】:2011-04-24 02:23:59
【问题描述】:

通过php插入文本时如何在textarea中新建一行?

我以为是\n,但实际上是在文本区域中打印出来的。

谢谢

【问题讨论】:

  • 向我们展示你的代码,我敢打赌你正在做类似echo '\n'; 而不是echo "\n";
  • 其实我在做 echo $contact->address;为了让它工作,我需要做str_replace('\n', "\n", $contact->address) 这是迟钝的。这是为什么呢?
  • 你是如何存储数据的。有些东西在翻译中丢失了。你add_slashes吗?保存到数据库?
  • @Hailwood。那么你必须有一个文字'\n'。也就是说,两个字符,一个反斜杠和一个 en,而不是换行符(为方便起见,它表示为“\n”,但它实际上只是一个字符;要使用该语法,您必须使用双引号;制表符也是如此,例如,\t)。
  • 你是怎么得到\n的,你是把它作为两个不同的字符输入,还是按回车键?更准确地说,您的数据的来源是什么?

标签: php textarea


【解决方案1】:

没有看到您的代码,我无法确定,但我猜您使用的是单引号 ('\n') 而不是双引号 ("\n")。

如果字符串用双引号括起来,PHP 只会评估转义序列。如果您使用 '\n',PHP 只会将其作为文字字符串。如果您使用“\n”,PHP 将解析字符串中的变量和转义序列,并按照您的预期打印一个新行。

【讨论】:

  • 如果你不使用引号怎么办 ;) (即它直接来自变量。
【解决方案2】:

试试

$text = 'text line one' . PHP_EOL . 'text line two';
echo '<textarea>' . $text . '</textarea>';

将在 texarea 的 reparate 行上添加每个文本。

【讨论】:

    【解决方案3】:

    PHP 端:从 Textarea 字符串到 PHP 字符串

    $newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);
    

    PHP 端:PHP 字符串返回到 TextArea 字符串:

    $list = str_replace('|', '&#13;&#10;', $r['db_field_name']);
    

    【讨论】:

    • 这正是我要找的东西
    【解决方案4】:

    Alay Geleynse 说的是对的,我和你有同样的问题,问题是由于转义字符(\r,\n)在那里。为了“未转义”我使用的变量$var = stripcslashes($var),它显示正确

    【讨论】:

    • 2020 - 这拯救了我的一天......谢谢
    【解决方案5】:

    Carriage Return

    \n 
    \r
    <br />
    ^M
    

    【讨论】:

      【解决方案6】:

      2020 - Google 把我带到这里是为了类似的事情。

      基于上述用户@Va1iant 的回答

      环境:

      • HTML 5 / 引导 4.5
      • php 7.3.x
      • mariadb 10.2.x

      问题:

      • 带文本区域的输入表单 (发布后没有出现在数据库中的\r\n问题)
      • 使用 textarea 编辑表单 (\r\n 出现在 db 中,也出现在发布后的编辑表单中)

      解决方案:

      • DB - textarea 内容的列类型设置为“varchar”
      • 编辑表单 - textarea 内的内容的代码 sn-p(使用了条形斜杠)如下所示
      <?= isset($_POST['MailingAddress']) ? stripcslashes(misc::esc($_POST['MailingAddress'])) : misc::esc($data['current_mailing_address']) ; ?>
      
      

      其中 misc::esc -> return htmlspecialchars($var, ENT_QUOTES|ENT_HTML5, 'UTF-8');

      注意:

      我没有尝试使用 white-space: pre-line;如概述 CSS Tricks 所以这也可能是一个解决方案 - 不使用 stripcslashes。

      【讨论】:

        【解决方案7】:

        我已将\p 用于文本文件。试试

        【讨论】:

          【解决方案8】:

          只是为了完成该问题的解决方案,正如其他人提到的那样使用"\n" *(或在某些情况下"\r\n")而不是'\n'

          当您想使用 php 显示 textarea 内容并保留新行时,您需要使用 nl2br,因此如果您为文本设置一个变量并将其命名为 $YOUR_TEXT ,您应该将该函数用作:@ 987654326@

          更多详情请关注here


          • Unix和Unix程序通常只需要换行\n,而Windows和Windows程序通常需要\r\n

          【讨论】:

            【解决方案9】:

            我遇到了类似的问题,我的解决方案是双重转义换行符。 \\n

            【讨论】:

              【解决方案10】:

              使用nl2br()nl2br\n 转换为 &lt;br /&gt; 作为字符串。但 &lt;br /&gt;(string) 不会创建新行。你应该将&lt;br /&gt;(string) 替换为&lt;br&gt;,这样就可以了。

              示例:

              $content = "foo \n bar";
              echo str_replace("<br />","<br>",nl2br($content));
              

              结果:

              foo
              bar
              

              按行分割:

              function SplitLine($txt){
                          $txt  = nl2br($txt);
                          $txt = explode("<br />",$txt);
                          return $txt;
                          
                      }
              

              我发了

              foo
              bar 
              

              textarea 作为POST 方法到php。

              print_r(SplitLine($_POST['text_area']));
              

              结果:

              Array ( [0] => foo [1] => bar)
              

              你可以使用for循环来获取数据并打印出来:

              $result = SplitLine($_POST['text_area']);
              for($i = 0;$i < count($result);$i++){
                 echo $result[$i]."<br>";
              }
              

              结果是

              foo
              bar
              

              完整代码(仅供测试):

              <?php 
              //MyFunction
              function SplitLine($txt){
                  $txt  = nl2br($txt);
                  $txt = explode("<br />",$txt);
                  for($i = 0;$i < count($txt);$i++){
                     echo $txt[$i]."<br>";
                  }
                  return $txt;        
              }
              //My Code
              if(isset($_POST['submit_data'])){
                  print_r(SplitLine($_POST['text_area']));
              }
              ?>
              <br>
              <form method='post'>
                  <textarea name='text_area'></textarea>
                  <br>
                  <input type='submit' value='Send Data :)' name='submit_data' />
              </form>
              

              【讨论】:

                【解决方案11】:
                $row['content']=stripslashes($row['content']);
                $row['content']=str_replace('<br />',"newline",$row['content']);
                $row['content']=htmlentities($row['content']);
                $row['content']=str_replace('newline',"<br>",$row['content']);
                

                【讨论】:

                • 欢迎来到吉姆。请为您的答案添加一点解释
                【解决方案12】:

                这样动态输入你可以使用的每一行

                echo chr(13)
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-06-02
                  • 1970-01-01
                  • 2021-10-31
                  • 1970-01-01
                  • 2016-12-03
                  • 2014-04-03
                  相关资源
                  最近更新 更多