php :: textarea 中的新行?

Posted

技术标签:

【中文标题】php :: textarea 中的新行?【英文标题】:php :: new line in 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的,你是把它作为两个不同的字符输入,还是按回车键?更准确地说,您的数据的来源是什么? 【参考方案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)

【讨论】:

以上是关于php :: textarea 中的新行?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 php 代码中的 textarea 元素中添加新行?

处理php中的新行

(已关闭)PHP Textarea 替换用 br 标记返回键(新行)而不是将其保存到 txt 文件

Javascript:如何计算 textarea 或 contenteditable div 中的新行?

textarea 中的新行在 IE 中不起作用

按下 ENTER 时禁用 Textarea 中的新行