json_encode()输出中的换行符

时间:2016-10-10 16:35:53

标签: php json ajax

我正在构建一个像这样的输出数组

            if (count($errors)) {
                $success = 'false'; 
                $output['json_msg'] = "Please try your submission again.";
                $output['errors'] = $errors;
            } else {
                $success = 'true';  
                $output['json_msg'] = "Thanks for Becoming a NOLA Insider!";
            }

            $output['success'] = $success;

            header('Content-type:application/json;charset=utf-8');
            if (count($errors)) { http_response_code(500); }
            echo json_encode($output);          
            exit;

但是,当我查看开发者工具的Chrome网络面板中的响应时,我看到响应中出现了新行:

developer console screenshot

我尝试在trim()中包装json_encode(),但这会产生乱码输出。

如何消除回车?

5 个答案:

答案 0 :(得分:4)

您可以尝试使用str_replace

删除新行
$output = str_replace(array("\r\n", "\n", "\r"),'',$output);
echo json_encode($output); 

答案 1 :(得分:2)

如果您在\r\n之后向json代码中获取json_encode()等新行字符,则可以使用您获得的最终json_value跟进该方法。这将删除您执行json_encode()后获得的代码中输出的所有新行。

因此,您需要preg_replace() json outputed值,如下所示,它将从json_code删除新行。

这会将没有值的新行替换为preg_replace()中的第二个参数。

  

尽量不要在文档的开头或结尾处理的php codes(即)打开和关闭代码之间提供任何白色间距。这有时可能会导致问题。

<强>代码:

$output_json = preg_replace("!\r?\n!","", $output_json);

答案 2 :(得分:2)

您的PHP文件末尾是否有?>以及删除后发生了什么?

因为您可能在脚本末尾有回车符,可能会在回复之前发送:

?>\n
// END OF FILE

这可以解释为PHP实际上是一种模板语言:

这是一个定义函数并显示文本的文件:

<?php
/**
 * @File lib.php
 */
 function sayHello()
 {
     echo "hello";
 }
 ?>
 forgotten text

这是一个包含此文件的文件。

<?php
/**
 * @file index.php
 */
 include_once('lib.php');
 sayHello();

这将输出:

forgotten text
hello

&#34;被遗忘的文字&#34;包含lib.php文件时输出,而#34;你好&#34;输出之后。

(但它可能更简单,只是@nanocv建议的那一点)

答案 3 :(得分:2)

我打赌你的php代码以这种方式启动:

1.            <--- Note the blank line here
2. <?php

这是一个新的行字符,它将成为结果的一部分。

(这样我可以重新创建相同的行为)

enter image description here

答案 4 :(得分:-1)

我解决了从function addPlayer(player) { const winners = [2, 3]; return ( <div> <li>{`${player.name}${ winners.includes(player.uid) ? " (is Winner)" : "" }`}</li> </div> ); } 中指示的php文件中删除空格的问题。