So entfernen Sie mehrere Zeilenumbrüche (\n) aus json-string?

Scheint es ein problem mit magic quotes. Die ursprüngliche Zeichenfolge enthält nur \n und \n\n \n\n\n und \n\r und so weiter. Diese Zeilenumbrüche nicht vom browser interpretiert.

, Was wir tun möchte, ist: zu ersetzen, die mehr als 2 Zeilenumbrüche mit nur 1 einzelnes "\n".

Was wir versucht, noch: viele verschiedene reguläre Ausdrücke preg_replace, aber das \n wird nicht rausgeschmissen werden.

Irgendwelche Ideen?

Heres ein Beispiel (aktualisiert Ihre Anregungen - aber immer noch nicht funktioniert):

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"}
  • Ich denke, der zweite reguläre Ausdruck, den Sie versucht hat sich ein Tippfehler auf das vierte Zeichen! (aka: bitte zeigen Sie einige Ihrer arbeiten und die Ergebnisse, so ist es leicht zu sehen, ob es nur ein Fehler in der expression, oder etwas anderes (komisches Zeug in die json -))
  • Was haben Sie versucht? Und haben Sie sich enthalten /s-modifier, welcher enthält neue Zeilen?
Schreibe einen Kommentar