2016-10-13 2 views
-1

Okay, ich spiele gerade mit php herum. Ich habe eine HTML-Datei und eine PHP-Datei. Die HTML-Datei enthält ein Textfeld. Die .php-Datei enthält einige Funktionen, die mit der vom Benutzer eingegebenen JSON-Zeichenfolge verwechselt werden. Ich weiß, wie man PHP auf die Webseite ausgibt. Ich möchte das GANZE json-Skript auf dem Textfeld ausgeben. Im Grunde möchte ich in der .php-Datei den JSON in eine Zeichenkette konvertieren und diese Zeichenkette in den HTML-Textbereich übergeben. Dies ist die json:Wie man JSON mit PHP auf der Seite ausgibt

{ 
    "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" 
} 

Ich versuchte json_encode mit(), aber bekam Fehler wegen der Anführungszeichen deplatziert sind, so Ich frage mich, ob noch ein einfacher Weg, um die ganze json in eine Zeichenfolge zu konvertieren.

+4

json ist bereits Text. buchstäblich alles, was Sie brauchen würden ist ' ' –

+0

Sie möchten nur die JSON ausgeben oder Sie möchten mit den Daten arbeiten. Wenn Sie es als einfachen Text ausgeben möchten, codieren Sie es nicht einfach nur. –

Antwort

0

Wenn Sie nicht die Zeilenretouren und Tabs für die Formatierung erhalten, können Sie meine hübsche Json-Druckfunktion verwenden, die Tabs und Zeilenrückgaben zu den JSON-Daten hinzufügen wird.

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; 
} 

Dann echo Sie es nur

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

Im Grunde, was es tut gegeben Zeichenfolge json wie diese

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

Es wird es so machen (oder ähnlich)

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

Normalerweise verwende ich es einfach für displ Ja, ich bin mir nicht sicher, ob Sie den Leerraum beim Dekodieren entfernen müssen.

0

Wenn die PHP auch den HTML-Code hält dann benutzen Sie einfach htmlspecialchars() die Sonderzeichen zu entkommen, die zwischen dem <textarea> Tag problematisch wäre.

Kleines Beispiel einer PHP-Datei:

<?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>