You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP DOM Document输出:如何让 转为实际换行而非文本?

解决PHP DOM解析器输出时\r\n被当作文本显示的问题

嘿,我一眼就看出问题所在啦——你在输出时用了单引号包裹'/r/n',而且还打错了转义字符(应该是\r\n不是/r/n)!

问题原因

在PHP里,单引号字符串的转义规则很严格:只有\'和\\会被解析成对应的字符,其他像\r、\n这类转义序列都会原样输出。所以你写的'/r/n'直接被当成普通文本打印出来了,根本没变成换行符。

另外你之前尝试的formatOutput = true之所以没用,是因为这个设置只影响DOMDocument::saveHTML()生成的HTML格式,而你这里是用echo直接拼接输出字符串,DOM的格式化配置管不到这部分哦。

修正方案

只需要做两个小修改:

  1. 把单引号里的/r/n改成正确的转义字符\r\n
  2. 用双引号包裹这个换行符,让PHP解析转义序列

修正后的代码片段:

foreach($output->getElementsByTagName('a') as $link) {
    echo '<topic_title>'.$link->nodeValue.'</topic_title>'. '<br>'. "\r\n". '<topic_desc>'.$link->getAttribute('title').'</topic_desc>'. '<br><br>';
}

更简洁的写法(用双引号插值):

如果你想让代码更清爽,可以把整个输出字符串用双引号包裹,直接插入变量:

foreach($output->getElementsByTagName('a') as $link) {
    echo "<topic_title>{$link->nodeValue}</topic_title><br>\r\n<topic_desc>{$link->getAttribute('title')}</topic_desc><br><br>";
}

额外说明

如果是想在浏览器页面上看到可视化的换行,那\r\n本身是文本换行,浏览器会忽略掉,这时候你已经加了<br>标签,足够在页面上显示换行效果;如果是希望HTML源代码里有整齐的换行,那上面的修改就能达到你的期望输出啦。

内容的提问来源于stack exchange,提问作者Kamil Janicki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:22:06