\r\n 从数据库中提取后出现在 <textarea> 中

\r\n showing up in <textarea> after pulled from database

首先从文本区域捕获数据。

第 1 行 2号线 3号线 等等

它在存储在数据库中之前通过此函数发送(我愿意接受更好的解决方案,但如果 PDO 是其中之一,我不明白它并且还没有让它工作)

function test_input($data) {
    global $conn;

    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    $data = mysqli_real_escape_string($conn, $data);

    return $data;
}

这是我防止注入的方法(不是我的方法,而是我发现的一种方法,到目前为止效果很好,它给我带来了换行符和文本区域的问题)

我尝试从数据库中提取数据并将其显示在文本区域中,它显示 \r\n 而不是换行符。它存储在带有换行符的数据库中(我没有看到 \r\n 但我在新行上看到了数据)

我试过 nl2br,我试过 html_entity_decode,我试过 str_replace \r\n 到 br(然后它只显示 br 文字而不是 \r\n).

根据我在此站点上发现的研究,这是我在将其存储在导致此问题的数据库中之前对它所做的事情,但 none 的解决方案对我有用。

帮助。

将文本中的\r\n替换为&#13;&#10;,然后将其放入文本区域并显示给用户。

对我有用。

试试这个可能会有帮助

<?php 
function nl2br2($string) { 
$string = str_replace(array("\r\n", "\r", "\n"), "<br />", $string); 
return $string; 
} 
?> 

Html 与 php 和 windows(回车符 return 和换行符)。乐 了解会发生什么 当您在缓冲区中有一个值字段时。缓冲区可以来自或去往 input/output 设备 缓冲区内的内容可能需要替换为适合设备的字符串。 逐行或从 SQL api 查询中从数据库中提取数据将需要重复正则表达式和替换操作,直到所有 表达方式发生了变化。在输入进入 DB 字段之前对其进行防弹验证始终是一个好主意。 我遇到了由导致打印机的额外数据(转义序列)引起的打印问题 停止并等待复位序列。没有人理解为什么打印作业无法打印类似 12个月。我写了一个过滤器并将其添加到打印机界面。问题已解决