JSON-Daten mit PHP komprimieren

JSON-Daten mit PHP komprimieren

Für alle, die gerne JSON-Daten mit PHP komprimieren möchten.
Diese Funktion entfernt alle Steuerzeichen sowie alle Leerzeichen:
PHP:
/**
  * Compresses a JSON string by removing all control characters and white spaces
  * @param string $json The JSON to compress
  * @author ComFreek
  * <code>
  *   $old_json = file_get_contents('old.json');
  *   $new_json = json_compress( $old_json );
  *   file_put_contents('new.json', $new_json);
  * </code>
  * @return string The compressed JSON
  */
function json_compress($json)
{
  $cJson = "";
  $inString = false;
  for ($i=0; $i<strlen($json); $i++)
  {
    $char = $json[$i];
    if (preg_replace('/[\x00-\x1F\x7F]/', '', $char) == '')
      continue;
    
    if ($inString == false && $char==" ")
      continue;
      
    if ($char == '"')
    {
      if ( $i==0 || ($i > 0 && $json[$i-1]!='\\') )
        $inString = !$inString;
    }
      
    $cJson .= $char;
    
  }
  return $cJson;
}
Lizenz: Keine, aber es wäre nett, wenn Ihr meinen Namen (ComFreek) stehen lassen würdet.

Bugs: Falls Ihr welche findet, einfach Bescheid sagen!

Kommentare erwünscht, viel Spaß!
Autor
ComFreek
First release
Last update
Bewertung
4,00 Stern(e) 1 Bewertungen

More resources from ComFreek

Neueste Bewertungen

Noch nicht getestet, aber das entfernen von Non-printable-Characters aus den JSON-Nutzdaten ist eine gute Idee. Allerdings könnte man statt dem preg_replace auch preg_match verwenden oder das replace gleich auf den kompletten String anwenden. Zudem gibt es für NPC auch eine Regex-Klasse, statt den Raum einzeln festzulegen. Unicode wird im Pattern nicht berücksichtigt (daher ein Stern-Abzug).