I am trying to make a simple journalview app for iPhone using a mysql DB. I am using php to connect to the db and encode the data to json. I am using a very simple db with 3 columns:
When I select the id and subject from the table, the JSON data is displayed correctly. When I select everything or I select the message alone, I only see a white screen. The message column is of datatype text and should be able to have strange signs (/,\,¨,$,%, spaces, lines,...) The only way I can get the message data to display is by doing the following in my connection file:
while($r = mysql_fetch_assoc($resultset))
{
//$r = preg_replace("!?
!", " ",$r);
$r= json_encode($r);
$records[] = $r;
}
//Output the data as JSON
echo json_encode($records);
}
}
However, the data that is returned is full of backslashes, , and does not seem like valid json:
[{"id":"248","subject":"General","message":"Dear Diary
This is a test.
Does it work or not?!
Goodbye.
D"},{"id":"249","subject":"General","message":"Hi
This is Test number 2.
Does it Work?
\/\/ goodbye \\\\"}]
If i empty my message column and put in normal text without special signs it works fine, so I'm guessing that is the issue. I would be better however if a message could contain special characters and backslashes, is this possible or not?
The and are valid and they are fine. They are hidden chartaters, they are stored this way in your database also so you have 2 options. Clean the database with the below function or clean the item before putting it into json with it.
function clean($string) {
$string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}
if you want to keep the special characters escape them Parsing JSON containing new line characters