OpenXE/classes/Modules/TransferSmartyTemplate/TemplateHelper/XmlHelper.php
2021-05-21 08:49:41 +02:00

55 lines
1.5 KiB
PHP

<?php
namespace Xentral\Modules\TransferSmartyTemplate\TemplateHelper;
final class XmlHelper
{
/**
* @param string $string
* @param string $charset
*
* @return string
*/
public function escapeXml($string, $charset = 'UTF-8')
{
$string = $this->stripControlChars($string);
return htmlspecialchars($string, ENT_XML1 | ENT_QUOTES, $charset, true);
}
/**
* CDATA-Abschnitt erzeugen
*
* @param string $string
*
* @return string
*/
public function createXmlCdataSection($string)
{
return sprintf('<![CDATA[%s]]>', (string)$string);
}
/**
* Filtert alle Steuerzeichen aus; außer Zeilenumbrüche, Tabs und Leerzeichen
*
* @see https://www.ascii-code.com/
*
* @param string $string
*
* @return string
*/
private function stripControlChars($string)
{
// Erlaubte Steuerzeichen
// \x09 = Horintal tab (HT) = \t
// \x0a = Line feed (LF) = \n
// \x0d = Carriage return (CR) = \r
$string = (string)preg_replace('/[\x00-\x08]/', '', (string)$string); // Steuerzeichen bis HT und LF
$string = (string)preg_replace('/[\x0b\x0c]/', '', (string)$string); // Steuerzeichen zwischen LF und CR
$string = (string)preg_replace('/[\x0e-\x1f]/', '', (string)$string); // Steuerzeichen ab CR
$string = (string)preg_replace('/[\x7f]/', '', (string)$string); // DELETE
return $string;
}
}