2016-05-20 9 views
1

データベースからコンテンツを取得していますが、達成しようとしているコンテンツに対してこのコンテンツが正しくフォーマットされていません。echoの前にPHP文字列の部分を削除します

{"5":"The content"} 

""の最初のセット内の数字は、各エントリに異なるとシーケンシャルではありません。データはDBから来てどのように

私はこれからの内容が必要です。 PHPを使用して文字列の不要な部分を削除する最良の方法は何ですか?

これは、私は現在、コンテンツを表示しています方法です:

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo $row["form_data"]. "<br>"; 
    } 
} else { 
    //empty message will be here 
} 
+0

を使用することができますそれはとても結果の上に、ループをデコードしたり(リセット 'のようなものを使用してJSONのように見えます)'最初の/唯一の要素の値。 – jeroen

+0

'{" 5 ":"コンテンツ "}'から '5'が必要ですか? –

+0

あなたの '$ row [" form_data "]'は '{" 5 ":"内容 "}'を含んでいますか? –

答えて

1

JSON文字列である、あなたがする必要があるすべては、その文字列

は関係なく、それはJSONつまり、あなたのように定義されたものの配列にJSONに変換json_decode()の第二のparamを使用しjson_decode()ですオブジェクトである場合、current配列構文を使用して、このデータの中の数字(5)に関係なく、コンテンツの部分を取得することができます。

$data = json_decode($row["form_data"], true); 
echo current($data); 
+2

'5番目のインデックスをエコーし​​ません。 'current'を使います。このため*最初の ""セットの番号は各エントリで異なり、連続していません。* –

+0

@HankyPanky良いコールは、そのことを考えなかった – RiggsFolly

+0

パーフェクト、ありがとう! :) –

1

いや、実際にはない

をエコーする前にPHPの文字列の部分を削除します。

{"5":"The content"} 

JSONは、あなたのように先にdecodeそれを移動して、その番号を取るです。何らかの文字列操作で文字列を解析する必要はありません。

実行にこのことを、あなたはあなた自身を書くことができ、コードの

print_r(json_decode('{"5":"The content"}',true)); 

休憩を参照してくださいよ、コピーペーストが右答える必要はありませんか? :)

0

あなたはそれを作るためにjson_decodeを使用することができ、これは一例です:

$string = '{"5":"The content"}'; 
    $json = json_decode($string); 
    var_dump($json->{'5'}); 

、結果は次のとおりです。

string 'The content' (length=11) 

それは5ではないのですが、あなたが最初のレコードをしたい場合は、あなたはそのようなものを作ることができます:

$string = '{"5":"The content", "6":"The"}'; 
    $json = json_decode($string); 
    foreach ($json as $key => $value) { 
     var_dump($value); 
     exit; 
    } 
取得するそれは最初の値のみ

またはそれ以上を出力します

、あなたがcurrent()

var_dump(current($json)); 
+2

もしそれがいつか5でなかったら? –

関連する問題