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

PHP类返回含换行符的JSON响应问题求助

问题原因分析

嘿,这个问题我太熟悉了!咱们来一步步拆解:

你的问题根源在于HEREDOC语法的特性——它会原封不动保留你在标记内写的所有换行、空格和缩进,包括你为了代码美观添加的那些换行和缩进。

比如你在HEREDOC里写的每一行HTML结尾的换行,还有<div>前面的缩进空格,都会被完整保留在生成的字符串里。当这些字符串被存入$this->result数组,再通过json_encode转为JSON响应时,这些换行符会被转义成\n,在浏览器的调试工具里就会显示成你看到的↵符号。

解决方案

有两种简单的办法可以解决这个问题,推荐第一种,既不影响代码可读性,又能清理多余的空白:

方法1:清理HTML字符串中的多余空白

在将HEREDOC生成的HTML存入数组前,用trim()去掉首尾的空白,再用正则表达式把中间的多个空白(包括换行、制表符、多个空格)替换成单个空格。修改你的foreach循环部分:

foreach ($parteneri as $partener) { 
    $html = <<<EOD 
<div id="{$partener['id']}" class="row lines"> 
    <div class="col-md-1">{$nrcrt}</div> 
    <div class="col-md-2 serie">{$partener['numefirma']}</div> 
    <div class="col-md-1">{$partener['tippartener']}</div> 
    <div class="col-md-2">{$partener['cif']}</div> 
    <div class="col-md-2">{$partener['oras']}</div> 
    <div class="col-md-2">{$partener['nume']} &nbsp; {$partener['prenume']}</div> 
    <div class="col-md-2"> 
        <span class="glyphicon glyphicon-search view-partener" title="Vizualizare"></span>&nbsp; 
        <span class="glyphicon glyphicon-trash trash-partener" title="Stergere"></span> 
    </div> 
</div> 
EOD; 
    // 清理多余空白:去掉首尾空白,把所有连续空白(包括换行)换成单个空格
    $cleanHtml = preg_replace('/\s+/', ' ', trim($html));
    $this->result[] = $cleanHtml;
    $nrcrt++; 
}

这样处理后,生成的HTML字符串会变得紧凑,没有多余的换行和空格,JSON响应里也就不会出现那些↵符号了。

方法2:调整HEREDOC写法,去掉不必要的换行

如果你不想用正则,也可以直接把HEREDOC里的代码写成紧凑的一行(但会牺牲代码可读性):

$this->result[] = <<<EOD
<div id="{$partener['id']}" class="row lines"><div class="col-md-1">{$nrcrt}</div><div class="col-md-2 serie">{$partener['numefirma']}</div><div class="col-md-1">{$partener['tippartener']}</div><div class="col-md-2">{$partener['cif']}</div><div class="col-md-2">{$partener['oras']}</div><div class="col-md-2">{$partener['nume']} &nbsp; {$partener['prenume']}</div><div class="col-md-2"><span class="glyphicon glyphicon-search view-partener" title="Vizualizare"></span>&nbsp;<span class="glyphicon glyphicon-trash trash-partener" title="Stergere"></span></div></div>
EOD;

这种方法虽然能解决问题,但代码看起来很杂乱,不利于后续维护,所以更推荐第一种方法。

额外说明

其实这些换行符本身并不会影响HTML的渲染——浏览器会自动忽略HTML中的多余空白。但如果是你在调试时看到响应里的↵觉得不舒服,或者担心响应体积过大,那么清理空白就是很有必要的操作。

内容的提问来源于stack exchange,提问作者Leonida-Alexandru Diaconu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:40:15