通过 php 插入文本时如何在文本区域中创建新行?
我以为是
\n
,但它确实打印在文本区域中。
谢谢
没有看到你的代码我无法确定,但我的猜测是你使用的是单引号 (' ') 而不是双引号 (" ”)。
如果字符串用双引号引起来,PHP 将仅计算转义序列。如果你使用' ',PHP 只会将其视为文字字符串。如果您使用“ ",PHP 将解析字符串中的变量和转义序列,并像您期望的那样打印一个新行。
尝试
$text = 'text line one' . PHP_EOL . 'text line two';
echo '<textarea>' . $text . '</textarea>';
将在 texarea 的修复行上添加每个文本。
PHP 端:从 Textarea 字符串到 PHP 字符串
$newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);
PHP 端:PHP 字符串返回到 TextArea 字符串:
$list = str_replace('|', ' ', $r['db_field_name']);
Alay Geleynse 说的是对的,我和你有同样的问题,问题是由于转义字符( , )在那里。为了“转义”变量,我使用了
$var = stripcslashes($var)
并且它显示正确
\n
\r
<br />
^M
2020 - Google 把我带到这里来做类似的事情。
基于上面用户@Va1iant 的回答
环境:
问题:
解决方案:
<?= 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');
注:
我没有尝试使用空白:行前;如所述 CSS Tricks 所以这也可以是一个解决方案 - 不使用 stripcslashes。
使用
nl2br()
。 nl2br
将 \n
转换为 <br />
作为字符串。但 <br />
(string) 不会创建新行。你应该将 <br />
(字符串)替换为 <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
作为 php 的 POST
方法。
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>
我已将
\p
用于文本文件。尝试一下
只是为了完成该问题的解决方案,正如其他人提到的那样,使用
"\n"
*(或在某些情况下 "\r\n"
)而不是 '\n'
当您想使用 php 显示文本区域内容并保留新行时,您需要使用
nl2br
,因此,如果您为文本分配一个变量并将其命名为 $YOUR_TEXT ,您应该将该函数用作: nl2br($YOUR_TEXT)
更多详情请参阅这里
\n
,而Windows和Windows程序通常需要\r\n
。我有一个类似的问题,我的解决方案是双重转义换行符。 \n
//Some Additional Related Validation
function test_input_hacks($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
$data = strip_tags($data);
return $data;
}
$message = test_input_hacks($_POST['message']);
//For All Operating Systems
echo str_replace(array("\r\n", "\r", "\n"),'<br>', $message);
$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']);
像这样使用动态输入您可以使用的每一行
echo chr(13)