Tweeper.php: fix Invalid Character Error when converting Instagram json to XML
authorAntonio Ospite <ao2@ao2.it>
Tue, 28 Dec 2021 22:49:39 +0000 (23:49 +0100)
committerAntonio Ospite <ao2@ao2.it>
Tue, 28 Dec 2021 22:53:00 +0000 (23:53 +0100)
Converting Instagram json data to XML was failing with the following
message:

  PHP Fatal error:  Uncaught DOMException: Invalid Character Error in
  /usr/share/php/Symfony/Component/Serializer/Encoder/XmlEncoder.php:445

This was caused by some item starting with a number which resulted in
invalid XML element names.

Remove the items containing the problematic names from the json data
before converting to XML.

Also stop handling the "knobs" element which does not seem to be there
anymore.

src/Tweeper.php

index de1f474..f79bb08 100644 (file)
@@ -312,13 +312,11 @@ class Tweeper {
 
     $data = json_decode($matches[1], $assoc = TRUE);
 
 
     $data = json_decode($matches[1], $assoc = TRUE);
 
-    // The "qe" object contains elements which will result in invalid XML
-    // element names, so remove it.
+    // Remove items that may contain elements which can result in invalid XML
+    // element names (for example names starting with a number).
     unset($data["qe"]);
     unset($data["qe"]);
-
-    // The "knobs" object contains elements with undefined namespaces, so
-    // remove it to silence an error message.
-    unset($data["knobs"]);
+    unset($data["knobx"]);
+    unset($data["to_cache"]);
 
     // Stop here in case Instagram redirected to the login page, this can
     // happen when too many consecutive requests have been made from the same
 
     // Stop here in case Instagram redirected to the login page, this can
     // happen when too many consecutive requests have been made from the same