[英]php :: new line in textarea?
通過php插入文本時如何在textarea中創建新行?
我以為是\\n
,但實際上是在 textarea 中打印出來的。
謝謝
沒有看到您的代碼,我無法確定,但我的猜測是您使用的是單引號 ('\\n') 而不是雙引號 ("\\n")。
如果字符串用雙引號括起來,PHP 只會評估轉義序列。 如果您使用 '\\n',PHP 只會將其視為文字字符串。 如果您使用“\\n”,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 說的是對的,我和你有同樣的問題,問題是由於存在轉義字符 (\\r,\\n)。 為了“取消轉義”變量,我使用了$var = stripcslashes($var)
並且它顯示正確
\n
\r
<br />
^M
我已將\\p
用於文本文件。 試試
2020 年 - 谷歌為了類似的事情把我帶到這里。
基於上述用戶@Va1iant 的回答
環境:
問題:
解決方法:
<?= 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所概述的那樣,這也可能是一個解決方案 - 不使用 stripcslashes。
只是為了完成該問題的解決方案,正如其他人提到的那樣使用"\\n"
*(或在某些情況下"\\r\\n"
)而不是'\\n'
當您想使用 php 顯示 textarea 內容並保留新nl2br
,您需要使用nl2br
,因此如果您為文本分配變量並將其稱為 $YOUR_TEXT ,則應使用該函數: nl2br($YOUR_TEXT)
可以在此處找到更多詳細信息
\\n
,而 Windows 和 Windows 程序通常需要\\r\\n
。如果您只需要使用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;
}
我將帶有textarea
foo \\n bar
作為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>
我有一個類似的問題,我的解決方案是雙重轉義換行符。 \\\\n
$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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.