<?php
/**
- * @file src/Util/XML.php
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ *
*/
+
namespace Friendica\Util;
use DOMXPath;
use SimpleXMLElement;
/**
- * @brief This class contain methods to work with XML data
+ * This class contain methods to work with XML data
*/
class XML
{
/**
- * @brief Creates an XML structure out of a given array
+ * Creates an XML structure out of a given array
*
* @param array $array The array of the XML structure that will be generated
* @param object $xml The createdXML will be returned by reference
}
/**
- * @brief Copies an XML object
+ * Copies an XML object
*
* @param object $source The XML source
* @param object $target The XML target
}
/**
- * @brief Create an XML element
+ * Create an XML element
*
* @param \DOMDocument $doc XML root
* @param string $element XML element name
}
/**
- * @brief Create an XML and append it to the parent object
+ * Create an XML and append it to the parent object
*
* @param \DOMDocument $doc XML root
* @param object $parent parent object
}
/**
- * @brief Convert an XML document to a normalised, case-corrected array
+ * Convert an XML document to a normalised, case-corrected array
* used by webfinger
*
* @param object $xml_element The XML document
}
/**
- * @brief Convert the given XML text to an array in the XML structure.
+ * Convert the given XML text to an array in the XML structure.
*
* Xml::toArray() will convert the given XML text to an array in the XML structure.
* Link: http://www.bin-co.com/php/scripts/xml2array/
}
/**
- * @brief Delete a node in a XML object
+ * Delete a node in a XML object
*
* @param \DOMDocument $doc XML document
* @param string $node Node name
}
}
- public static function parseString($s, $strict = true)
+ /**
+ * Parse XML string
+ *
+ * @param string $s
+ * @param boolean $suppress_log
+ * @return Object
+ */
+ public static function parseString(string $s, bool $suppress_log = false)
{
- // the "strict" parameter is deactivated
libxml_use_internal_errors(true);
$x = @simplexml_load_string($s);
if (!$x) {
- Logger::error('Error(s) while parsing XML string.', ['callstack' => System::callstack()]);
- foreach (libxml_get_errors() as $err) {
- Logger::info('libxml error', ['code' => $err->code, 'position' => $err->line . ":" . $err->column, 'message' => $err->message]);
+ if (!$suppress_log) {
+ Logger::error('Error(s) while parsing XML string.', ['callstack' => System::callstack()]);
+ foreach (libxml_get_errors() as $err) {
+ Logger::info('libxml error', ['code' => $err->code, 'position' => $err->line . ":" . $err->column, 'message' => $err->message]);
+ }
+ Logger::debug('Erroring XML string', ['xml' => $s]);
}
- Logger::debug('Erroring XML string', ['xml' => $s]);
libxml_clear_errors();
}
return $x;
*/
public static function escape($str)
{
- $buffer = htmlentities($str, ENT_QUOTES, 'UTF-8');
+ $buffer = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
$buffer = trim($buffer);
return $buffer;
*/
public static function unescape($s)
{
- $ret = html_entity_decode($s, ENT_QUOTES);
+ $ret = htmlspecialchars_decode($s, ENT_QUOTES);
return $ret;
}