1

当我在日志表中输入评论时遇到问题,显示不正确。

例如当我输入:

1                 
2            
3

它会显示为:

1

2

3

为了解决这个问题,我注释掉了一些代码并添加了这个正则表达式行:

//$notes= str_replace("</br>","<br>",$sqlresult['Notes']); 
//$notes = str_replace("\r","",$sqlresult['Notes']); 
//$notes = str_replace("\n","",$sqlresult['Notes']); 
//$notes = str_replace("\\","",$sqlresult['Notes']); 
//$notes = str_replace("\r","<P>",$sqlresult['Notes']); 
$notes = trim(preg_replace('/\s\s/', '<br>', $sqlresult['Notes']));

但是,现在当从应用程序中粘贴文本时,我收到一个错误,该应用程序显示为一行,中间出现了很多额外的行。

例如

Files are.. CDSEYE SUBMIT BY M99-CDSENTD

展示:

Files are...  
CDSXEYE     


(10 EXTRA BLANK LINES)



  SUBMIT BY M99-CDSENTD

无论如何,我可以让 $notes 准确地显示输入的输入方式吗?

4

3 回答 3

2

你必须使用的原因

$notes = trim(preg_replace('/\s\s/', '<br>', $sqlresult['Notes']));

首先是因为您处理输入并将其存储在 sql 数据库中的方式有​​问题。我们只是通过在末尾删除额外的换行符来堵住这个漏洞。如果我们想要真正的 1 对 1 输入到输出,我们需要查看数据从输入文本框存储到 sql 数据库的方式。以及它是如何从该数据库中提取并显示回输出的。如果其他人编写了此代码,则可能需要一段时间才能找到它是如何完成的。

最后的答案是:

$notes = trim(preg_replace('/\r\r/', '<br>', $sqlresult['Notes']));
于 2013-07-10T15:35:55.773 回答
1

我认为问题出在倒数第二行,您将\r替换为<p>,这会增加一个额外的空白行。尝试<br>代替。

于 2013-07-10T14:44:19.187 回答
1

您用换行符 ( <br>) 替换每 2 个空格,这将是您休息的原因。

$notes = trim(preg_replace('/\s\s/', '<br>', $sqlresult['Notes']));

我建议删除上面的代码,然后把

 echo nl2br($your_text_variable); //in the view
于 2013-07-10T14:42:13.087 回答