X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FUtil%2FXML.php;h=c115e4d0de37c354f1fcfc95189025ebfb96d0b7;hb=990bbea19dca7057bc0c20a90a6b5b321f8a02ef;hp=ed0d4bbb0450d130f030bde8aa35b0c5070e9576;hpb=97fcf23371cb24c7c9dbb144ed7f250813176f45;p=friendica.git diff --git a/src/Util/XML.php b/src/Util/XML.php index ed0d4bbb04..c115e4d0de 100644 --- a/src/Util/XML.php +++ b/src/Util/XML.php @@ -5,7 +5,6 @@ namespace Friendica\Util; use Friendica\Core\Logger; -use Friendica\Util\Strings; use DOMXPath; use SimpleXMLElement; @@ -37,7 +36,7 @@ class XML $root = new SimpleXMLElement("<".$key."/>"); self::fromArray($value, $root, $remove_header, $namespaces, false); } else { - $root = new SimpleXMLElement("<".$key.">".Strings::escape($value).""); + $root = new SimpleXMLElement("<".$key.">".self::escape($value).""); } $dom = dom_import_simplexml($root)->ownerDocument; @@ -105,7 +104,7 @@ class XML } if (!is_array($value)) { - $element = $xml->addChild($key, Strings::escape($value), $namespace); + $element = $xml->addChild($key, self::escape($value), $namespace); } elseif (is_array($value)) { $element = $xml->addChild($key, null, $namespace); self::fromArray($value, $element, $remove_header, $namespaces, false); @@ -124,7 +123,7 @@ class XML public static function copy(&$source, &$target, $elementname) { if (count($source->children()) == 0) { - $target->addChild($elementname, Strings::escape($source)); + $target->addChild($elementname, self::escape($source)); } else { $child = $target->addChild($elementname); foreach ($source->children() as $childfield => $childentry) { @@ -145,11 +144,11 @@ class XML */ public static function createElement($doc, $element, $value = "", $attributes = []) { - $element = $doc->createElement($element, Strings::escape($value)); + $element = $doc->createElement($element, self::escape($value)); foreach ($attributes as $key => $value) { $attribute = $doc->createAttribute($key); - $attribute->value = Strings::escape($value); + $attribute->value = self::escape($value); $element->appendChild($attribute); } return $element; @@ -463,4 +462,43 @@ class XML return $first_item->attributes; } + + /** + * escape text ($str) for XML transport + * @param string $str + * @return string Escaped text. + */ + public static function escape($str) + { + $buffer = htmlspecialchars($str, ENT_QUOTES, "UTF-8"); + $buffer = trim($buffer); + + return $buffer; + } + + /** + * undo an escape + * @param string $s xml escaped text + * @return string unescaped text + */ + public static function unescape($s) + { + $ret = htmlspecialchars_decode($s, ENT_QUOTES); + return $ret; + } + + /** + * apply escape() to all values of array $val, recursively + * @param array $val + * @return array + */ + public static function arrayEscape($val) + { + if (is_bool($val)) { + return $val?"true":"false"; + } elseif (is_array($val)) { + return array_map('XML::arrayEscape', $val); + } + return self::escape((string) $val); + } }