Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replacing \r\n (newline characters) after running json_encode

So when I run json_encode, it grabs the \r\n from MySQL aswell. I have tried rewriting strings in the database to no avail. I have tried changing the encoding in MySQL from the default latin1_swedish_ci to ascii_bin and utf8_bin. I have done tons of str_replace and chr(10), chr(13) stuff. I don't know what else to say or do so I'm gonna just leave this here....

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

The jsonReadable function is from here and the parse function is from here. The str_replaces that are already in there are because I am getting weird formatted html tags like </h1>. Finally, $new is an array which is crafted above. Full code upon request.

Help me StackOverflow. You're my only hope

like image 897
Robbie Trencheny Avatar asked Nov 19 '10 23:11

Robbie Trencheny


2 Answers

Does the string contain "\r\n" (as in 0x0D 0x0A) or the literal string '\r\n'? If it's the former, this should remove any newlines.

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

Optionally, replace the second parameter "" with "<br />" if you'd like to replace the newlines with a br tag. For the latter case, try the following:

$json = preg_replace('!\\r?\\n!', "", $json);
like image 123
Frankie Avatar answered Sep 30 '22 17:09

Frankie


Don't replace it in the JSON, replace it in the source before you encode it.

like image 35
Ignacio Vazquez-Abrams Avatar answered Sep 30 '22 15:09

Ignacio Vazquez-Abrams