php :: textarea中的新行?

时间:2010-10-12 02:24:38

标签: php textarea

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

我认为它是\n,但字面上印有textarea。

由于

11 个答案:

答案 0 :(得分:65)

没有看到你的代码我不能确定,但​​我的猜测是你使用单引号('\ n')而不是双引号(“\ n”)。

如果字符串用双引号括起来,PHP将只评估转义序列。如果使用'\ n',PHP将把它作为文字字符串。如果使用“\ n”,PHP将解析变量和转义序列的字符串,并打印出您期望的新行。

答案 1 :(得分:6)

尝试

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

将在textarea的单独行中添加每个文本。

答案 2 :(得分:5)

PHP方面:从Textarea字符串到PHP字符串

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

PHP方面:PHP字符串返回TextArea字符串:

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

答案 3 :(得分:1)

Carriage Return

\n 
\r
<br />
^M

答案 4 :(得分:1)

Alay Geleynse说的是对的,我和你有同样的问题,问题是由于转义字符(\ r,\ n)存在。要'转义'我使用的变量$var = stripcslashes($var)并且它显示正确

答案 5 :(得分:0)

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

答案 6 :(得分:0)

2020年-Google带来了类似的服务。

以上述@ Va1iant用户的回答为基础

环境:

  • HTML 5 / Bootstrap 4.5
  • php 7.3.x
  • mariadb 10.2.x

问题:

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

解决方案:

  • DB-textarea内容的列类型设置为“ varchar”
  • 编辑表单-文本区域内的内容的代码段(使用的横线)如下所示
<?= isset($_POST['MailingAddress']) ? stripcslashes(misc::esc($_POST['MailingAddress'])) : misc::esc($data['current_mailing_address']) ; ?>

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

注意:

我没有尝试空白:行前;如概述 CSS Tricks,这也可能是一个解决方案-不使用脱衣舞娘。

答案 7 :(得分:0)

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

并且当您想使用php显示textarea内容并保留新行时,您需要使用nl2br,因此,如果您为文本使用varialbe并将其命名为$ YOUR_TEXT,则应使用该函数作为:nl2br($YOUR_TEXT)

可以找到更多详细信息here


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

答案 8 :(得分:0)

如果您只需要打印数据,请使用 nl2br()nl2br\n 转换为 <br />。但 <br /> 不会创建新行。您应该将 <br /> 替换为 <br>,然后这会起作用。

示例:

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

结果:

foo
bar

如果你需要拆分,你可以使用我的功能。 :D

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

我将 foo \n bartextarea 作为 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);
    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>

答案 9 :(得分:-1)

$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']);

答案 10 :(得分:-3)

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

echo chr(13)