【问题标题】:Regex Extra Line Error正则表达式额外行错误
【发布时间】:2013-07-10 14:35:01
【问题描述】:

我在将 cmets 输入日志表时遇到问题,显示不正确。

例如当我输入:

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 显示输入的确切输入方式吗?

【问题讨论】:

  • 您是否尝试过使用nl2br
  • @Karo 不,我没有,如果将它添加到我的代码中会怎样?我想测试一下。
  • $notes = nl2br($sqlresult['Notes']) 而不是您的正则表达式,但这取决于它们在$sqlresult['Notes'] 中的存储方式
  • @Karo 解析错误:解析错误,第 1615 行 C:\htdocs\ConferenceCall\Menutable.php 中的意外 T_VARIABLE

标签: php regex string newline


【解决方案1】:

你不得不使用的原因

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

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

最终答案是:

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

【讨论】:

    【解决方案2】:

    我认为问题出在倒数第二行,您将 \r 替换为

    ,这会增加一个额外的空白行。请尝试

    【讨论】:

    • 我取消了它的注释并放了
      但现在我退了一步,遇到了和以前一样的问题:
    • 那行被注释掉了,没有影响
    【解决方案3】:

    您用换行符 (&lt;br&gt;) 替换每 2 个空格,这将是您换行的原因。

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

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

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

    【讨论】:

    • 这删除了该列的全部内容
    猜你喜欢
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多