Кажется, проблема с магическими кавычками. Исходная строка просто содержит \ n и \ n \ n и \ n \ n \ n и \ n \ r и так далее. Эти новые строки не интерпретируются браузером.
То, что мы хотим сделать, это: заменить более 2-х строк новой строкой \ n.
То, что мы уже пробовали: много разных регулярных выражений с 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"}