2010-11-19 66 views
9

因此,當我運行json_encode時,它也從MySQL獲取\ r \ n。我試圖在數據庫中重寫字符串無濟於事。我試圖將MySQL中的編碼從默認的latin1_swedish_ci更改爲ascii_bin和utf8_bin。我已經完成了大量的str_replace和chr(10),chr(13)的東西。我不知道該說些什麼或做,所以我要去剛剛離開這個這裏....運行json_encode後替換 r n(換行符)

$json = json_encode($new); 
if(isset($_GET['pretty'])) { 
echo str_replace("\/", "/", jsonReadable(parse($json))); 
} else { 
$json = str_replace("\/", "/", $json); 
echo parse($json); 
} 

的jsonReadable功能是從here和解析函數是here。已經在那裏的str_replaces是因爲我得到奇怪的格式化html標籤,如</h1>。最後,$ new是上面製作的一個數組。根據要求提供完整代碼

幫我看StackOverflow。你是我唯一的希望

+0

您是否閱讀過JSON規範? http://www.json.org/ – 2010-11-19 23:06:49

+0

是的,我已經使用JSON很長一段時間了,事情是這個腳本的輸出被閃存拾取的CMS和閃存不像\ r \ n的東西。它只是插入我們不想要的新線。我們需要
。是的,我試過nl2br,沒有運氣。 – 2010-11-19 23:10:46

+0

然後有人決定不在Flash中正確實現JSON。可愛。 – 2010-11-19 23:53:05

回答

7

該字符串是否包含「\ r \ n」(如在0x0D 0x0A中)或字符串'\ r \ n'?如果是前者,則應刪除任何換行符。

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

可選「與」取代第二個參數「< BR/>」如果你想與br標籤,以取代換行符。對於後者,請嘗試以下操作:

$json = preg_replace('!\\r?\\n!', "", $json); 
+0

這沒有奏效,他們仍然在那裏。我想*也許*它與MySQL有關:/ – 2010-11-20 08:36:16

+0

非常有用@Frankie,謝謝。 – DnfD 2013-10-22 00:31:32

2

我有一個類似的問題,我用:

如果
$p_num = trim($this->recp); 
$p_num = str_replace("\n", "", $p_num); 
$p_num = str_replace("\r", ",", $p_num); 
$p_num = str_replace("\n",',', $p_num); 
$p_num = rtrim($p_num, "\x00..\x1F"); 

不知道這會符合您的要求幫助。

+0

這也不起作用,我認爲這可能是一個MySQL問題。不過謝謝你的嘗試! *高五* – 2010-11-20 08:38:33

4

請勿在JSON中替換它,請在對其進行編碼之前將其替換爲源代碼。