【问题标题】:simple html dom php and new lines in plaintext简单的 html dom php 和明文中的新行
【发布时间】:2013-03-19 23:59:51
【问题描述】:

当我解析一个站点并打印出纯文本时,我在打印输出中得到很多无法通过 str_replace 删除的换行符。

例如,如果我解析 eBay 并查找结束时间,

$ebayEndTime = $this->html_simple_dom->find( 'span[class=vi-tm-left]', 0 )->plaintext;

打印出来是这样的:

\t\t\t\t\t(2013 年 3 月 19 日\n\t\t\t\t\t15:10:11 PDT)\n\t\t\t

尝试删除它没有效果:

$search = array('\n', '\t', '\r');
error_log("end time:" .  str_replace( $search, " ", $ebayEndTime));

仍然导致:

\t\t\t\t\t(2013 年 3 月 19 日\n\t\t\t\t\t15:10:11 PDT)\n\t\t\t

我需要怎么做才能删除换行符/制表符?我什至尝试过彻底:

$search = array('\n', '\t', '\r', '\\n', '\\t', '\\r', '\\\\n', '\\\t', '\\\r', '\\\\n', '\\\\t', '\\\\r');

据我所知,Java 要求对转义字符进行转义,但是当它打印在日志文件中时,是否将其打印为使用 '\' 的 html 代码?

【问题讨论】:

  • 我确实尝试过 nl2br() 因为它是我尚未尝试过的东西,但它也没有工作,似乎它正在使用特殊字符打印出来 - 否则,我相信我的 str_replace电话会解决它。如果我使用换行符/制表符复制并粘贴字符串并通过确实有效的 str_replace 调用运行它,那么它似乎是使用特殊字符打印出来的
  • 这回答了这个问题......那么为什么我的 str_replace 不这样做 - 它真的需要正则表达式吗? stackoverflow.com/questions/1703320/…
  • 问题是单引号字符串被逐字处理。插值需要双引号。

标签: php newline simple-html-dom


【解决方案1】:

怎么样:

$str = "\t\t\t\t\t(Mar 19, 2013\n\t\t\t\t\t15:10:11 PDT)\n\t\t\t";
echo trim(preg_replace('/\s+/', ' ', $str));
#=>(Mar 19, 2013 15:10:11 PDT)

【讨论】:

  • 这行得通,所以我接受。这不是我想做的——我想要一些更有活力的东西;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多