正则表达式额外线错误

时间:2013-07-10 14:35:01

标签: php regex string newline

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

例如我输入时:

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

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

E.g。

Files are.. CDSEYE SUBMIT BY M99-CDSENTD

显示:

Files are...  
CDSXEYE     


(10 EXTRA BLANK LINES)



  SUBMIT BY M99-CDSENTD

无论如何,我可以让$ notes显示输入完全输入的方式?

3 个答案:

答案 0 :(得分:2)

你必须使用

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

行是因为处理输入并将其存储在sql数据库中的方式有​​问题。我们只是在最后移除了额外的换行符来堵住那个洞。如果我们想要输出真正的1对1输入,我们需要查看数据从输入文本框到sql数据库的存储方式。它是如何从该数据库中拉出并显示回输出的。如果其他人写了这段代码,那么可能需要一段时间才能找到完成的方法。

最终答案最终成为:

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

答案 1 :(得分:1)

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

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

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

 echo nl2br($your_text_variable); //in the view

答案 2 :(得分:1)

我认为问题出在第二行到最后一行,你用&lt; p&gt; 替换 \ r ,这会增加一个额外的空白行。请尝试&lt; br&gt;