2016-10-13 21 views
-1

さて、私は現時点ではPHPで遊んでいます。私は.htmlファイルと.phpファイルを持っています。 .htmlファイルにはテキストエリアが含まれています。 .phpファイルには、ユーザーの型付けされたjson文字列で囲まれたいくつかの関数が含まれています。私はWebページにPHPを出力する方法を知っています。私はtextareaにWHOLE jsonスクリプトを出力したい。基本的に.phpファイルでは、jsonを文字列に変換し、その文字列を.htmlのテキストエリアに渡したいと考えています。 これはJSONです:私はjson_encode()を使用してみましたが、理由イムは思って場違いであること引用符のエラーを得たPHPを使用してJSONをページに出力する方法

{ 
    "destination_addresses" : [ "New Town, Uckfield, East Sussex TN22 5DJ, UK" ], 
    "origin_addresses" : [ "Maresfield, East Sussex TN22 2AF, UK" ], 
    "rows" : [ 
     { 
     "elements" : [ 
      { 
       "distance" : { 
        "text" : "3.0 mi", 
        "value" : 4855 
       }, 
       "duration" : { 
        "text" : "22 mins", 
        "value" : 1311 
       }, 
       "status" : "OK" 
      } 
     ] 
     } 
    ], 
    "status" : "OK" 
} 

文字列に全体JSONに変換する簡単な方法theresの場合。

+4

JSONはすでにテキストです。文字通り必要なのは ' ' –

+0

jsonだけを出力したい、またはデータを処理したいとします。単純なテキストとして出力したい場合は、出力するだけでエンコードしないでください。 –

答えて

0

整形用のリターンとタブが得られない場合は、jsonの印刷機能を使用して、タブと行をjsonデータに戻します。

function PrettyJson($json) { 
    $tc = 0;  //tab count 
    $r = '';  //result 
    $q = false;  //quotes 
    $t = "\t";  //tab 
    $nl = "\n";  //new line 

    for($i=0;$i<strlen($json);$i++){ 
     $c = $json[$i]; 
     if($c=='"' && $json[$i-1]!='\\') $q = !$q; 
     if($q){ 
      $r .= $c; 
      continue; 
     } 
     switch($c){ 
      case '{': 
      case '[': 
       $r .= $c . $nl . str_repeat($t, ++$tc); 
       break; 
      case '}': 
      case ']': 
       $r .= $nl . str_repeat($t, --$tc) . $c; 
       break; 
      case ',': 
       $r .= $c; 
       if($json[$i+1]!='{' && $json[$i+1]!='[') $r .= $nl . str_repeat($t, $tc); 
       break; 
      case ':': 
       $r .= $c . ' '; 
       break; 
      default: 
       $r .= $c; 
     } 
    } 
    return $r; 
} 

次に、あなたはちょうどそれがこの

{"one":[1,2,3],"two":{"three":3}} 

のようなJSON文字列を与えられないものを

echo '<textarea>'.PrettyJson($json).'</textarea>'; 

基本的には、この(または類似)のようにそれを作るだろう、それをエコー

{ 
     "one" : [1,2,3], 
     "two" : { 
       "three" : 3 
     } 
    } 

通常、私はそれをdisplに使用しますあなたがそれを解読するときに空白を取り除く必要があるならば、私は正しくは分かりません。

0

PHPでもHTMLを保持している場合は、ちょうど<textarea>タグの間問題となるの特殊文字をエスケープするhtmlspecialchars()を使用しています。 PHPファイルの

小さな例は:

<?php 

// Get the json value from a previous POST or set a default value. 
$json = isset($_POST['json']) ? $_POST['json'] : '{ 
    "destination_addresses" : [ "New Town, Uckfield, East Sussex TN22 5DJ, UK" ], 
    "origin_addresses" : [ "Maresfield, East Sussex TN22 2AF, UK" ], 
    "rows" : [ 
     { 
     "elements" : [ 
      { 
       "distance" : { 
        "text" : "3.0 mi", 
        "value" : 4855 
       }, 
       "duration" : { 
        "text" : "22 mins", 
        "value" : 1311 
       }, 
       "status" : "OK" 
      } 
     ] 
     } 
    ], 
    "status" : "OK" 
}'; 

?> 
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
    <div><!-- because form elements should not be direct childs of the form --> 
    <label for="json">Type your JSON:</label> 
    <br /> 
    <textarea name="json" rows="25" cols="84"><?php echo htmlspecialchars($json); ?></textarea> 
    <br /> 
    <br /> 
    <input type="submit" value="submit" /> 
    </div> 
</form> 
関連する問題