【问题标题】:Capturing linebreaks (newline,linefeed) characters in a textarea在文本区域中捕获换行符(换行符、换行符)字符
【发布时间】:2010-09-22 07:05:19
【问题描述】:

我有一个带有<textarea> 的表单,我想在服务器端的该文本区域中捕获任何换行符,并将它们替换为<br/>

这可能吗?

我尝试在textarea的CSS上设置white-space:pre,但还是不够。

【问题讨论】:

    标签: php html textarea line-breaks


    【解决方案1】:

    看看nl2br() 函数。它应该完全符合您的要求。

    【讨论】:

      【解决方案2】:

      nl2br() 函数的存在正是为了做到这一点:

      然而,这个函数添加了 br 标签,但实际上并没有删除新行——这通常不是问题,但如果你想完全去除它们并捕捉回车,你应该使用str_replacepreg_replace

      我认为 str_replace 会稍微快一些,但我没有进行基准测试;

      $val = str_replace( array("\n","\r","\r\n"), '<br />', $val );
      

      $val = preg_replace( "#\n|\r|\r\n#", '<br />', $val );
      

      【讨论】:

        【解决方案3】:

        如果您打算使用str_replacepreg_replace,您可能应该将"\r\n" 放在数组的开头,否则\r\n 序列将被转换为两个&lt;br/&gt; 标签(因为\r 将被匹配,然后\n 将被匹配)。

        例如:

        $val = str_replace( array("\r\n", "\n","\r"), '<br />', $val );
        

        $val = preg_replace( "#\r\n|\n|\r#", '<br />', $val );
        

        【讨论】:

          【解决方案4】:

          对于那些想要不依赖于nl2br() 的答案的人:

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

          或(在这种情况下):

          $newList = ereg_replace( "\n",'<br/>', $_POST['theTextareaContents']);
          

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

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-14
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多