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('|', ' ', $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
转换为 <br />
作为字符串。但 <br />
(string) 不会创建新行。你应该将<br />
(string) 替换为<br>
,这样就可以了。
示例:
$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 Textarea 替换用 br 标记返回键(新行)而不是将其保存到 txt 文件