0

に取り組んでいfacebook appます。データベースにいくつかの値をjson形式で保存しました。

ターゲットページの値を取得して、次のように値を表示しようとすると:

$sql = mysql_query("select * from `beforepublish` where `tabid` = '$page_id'") or die(mysql_error());
$sql = mysql_fetch_assoc($sql);

$contest_id = $sql['contestid'];
$temp_id = $sql["tempid"];
$value = $sql["values"];
$returnValue = json_decode($value);
echo "<pre>";
print_r($returnValue);
echo "</pre>";

ここでの値

$value = {"image":"upload_1182341221.jpg","conttxt":"Get a chance to win Samsung Galaxy Tab "}

そして私は$returnValue空白になっています。

しかし、私が試してみると:

$returnValue = json_decode('{"image":"upload_1182341221.jpg","conttxt":"Get a chance to win Samsung Galaxy Tab "}');
echo "<pre>";
print_r($returnValue);
echo "</pre>";

$returnValue が返されます:

stdClass Object
(
    [image] => upload_1182341221.jpg
    [conttxt] => Get a chance to win Samsung Galaxy Tab 
)

皆さん、私を助けてください、前のケースで空白の値を取得しているのはなぜですか?

編集

vardump($value) が返されます:

string '{"image":"upload_1182341221.jpg","conttxt":"Get a chance to win Samsung Galaxy Tab
    "}' (length=86)
4

3 に答える 3

1

少し奇妙ですが、データベースがUTF8文字列を提供しないことに関係している可能性があります(json_decodeが必要です)。

試す

mysql_query("SET NAMES 'utf8';");

実際のクエリの前に。

//編集: 改行が実際に問題を引き起こしています。json バリデーターを試してみてください: http://jsonlint.com/

于 2013-08-28T12:51:40.150 に答える
0
string '{"image":"upload_1182341221.jpg","conttxt":"Get a chance to win Samsung Galaxy Tab
    "}' (length=86)

あなたの問題があります。その改行とタブ。次のようになります。

string '{"image":"upload_1182341221.jpg","conttxt":"Get a chance to win Samsung Galaxy Tab"}' (length=84)

これが長さを出力する理由var_dump()であり、不要な/見えない文字に対して検証できます。


改行を JavaScript 文字列に として保存できます\n
json_encode()これを自動的に行います。

これは、すべてのエスケープ シーケンスに適用されます (一般的に使用されるのは\n\r\tおよび\b)。

于 2013-08-28T12:59:35.300 に答える