2016-10-10 103 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