2016-10-10 842 views
2

我建立一个输出数组,像这样换行符在json_encode()输出

  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

我试图在包装装饰json_encode(),(),但是这给了乱码输出。

如何消除回车?

+1

一段时间了,由于白色空间之前<?PHP的 –

回答

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 

“被遗忘的文本”时,输出包含在lib.php文件,而“你好”后输出。

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

+0

谢谢。我以前检查过,但现在再次检查。没有什么后?> – jerrygarciuh

+0

有一个单独的数据库连接文件包括在内。它后面有一个换行符,一旦删除,问题就解决了。谢谢! – jerrygarciuh

3

您可以尝试使用str_replace

$output = str_replace(array("\r\n", "\n", "\r"),'',$output); 
echo json_encode($output); 
+0

谢谢。我已经添加了这个,它保留了JSON,但我仍然清楚地知道\ n不是在$ output中,而是在我的代码中的其他地方。 – jerrygarciuh

2

如果您json_encode()后获得新的行字符,如\r\n到您的JSON代码,你可以跟进最终json_value,你得到的方法来去除新线。这将删除您在执行json_encode()后从您获得的代码中输出的所有新行。

因此,您需要preg_replace() json输出值如下,这将从json_code删除新行。

这将取代没有任何值的新行至preg_replace()中的第二个参数。

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

代码:

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

我敢打赌,你的PHP代码开始是这样的:

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

这将成为部分新行字符结果。

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

enter image description here

+0

我一直在寻找代码确切的问题,但没有找到它。非常第一行没有空格和<?php – jerrygarciuh

+1

然后我输了!之前我有一个非常类似的错误,并且是由于空行造成的,所以我认为它是相同的情况。我很高兴你解决了它! – nanocv