這似乎是一個魔術引號的問題。原始字符串只包含\ n和\ n \ n和\ n \ n \ n和\ n \ r等等。這些換行符不會被瀏覽器解釋。如何從json字符串中刪除多個換行符( n)?
我們想要做的是:用1個單獨的\ n替換2條換行符。
我們還試過了:很多不同的preg_replace正則表達式,但\ n不會被踢出去。
任何想法?
這裏有一個例子(更新您的建議 - 但仍無法正常工作):
echo '<h3>Source:</h3>';
$arr_test = array(
'title' => 'my title',
'content' => 'thats my content\n\n\n\nwith a newline'
);
$json_text = json_encode($arr_test);
$json_text = stripslashes($json_text); //if I leave that out, then \\n will echo
echo $json_text;
// OUTPUT: {"title":"my title","content":"thats my content\n\n\n\nwith a newline"}
echo '<h3>Result 1:</h3>';
$pattern = '/\n{2,}/';
$result1 = preg_replace($pattern,"x",$json_text);
echo $result1;
// OUTPUT: {"title":"my title","content":"thats my content\n\n\n\nwith a newline"}
echo '<h3>Result 2:</h3>';
$result2 = preg_replace('/([\n]+)/s', 'x', $json_text, -1, $count);
echo $count;
// OUTPUT: 0
echo $result2;
// OUTPUT: {"title":"my title","content":"thats my content\n\n\n\nwith a newline"}
我想你試過第二個正則表達式有第四個字的錯字! (又名:請顯示你的一些工作和結果,所以很容易看出它是表達式中的錯誤還是不同的東西(json中的奇怪東西)) – Nanne 2012-04-03 12:52:21
你試過了什麼?你是否包含/ s修飾符,其中包含新行? – 2012-04-03 12:57:42