Так, например, документ XML в кодировке ISO-8859-1, который даже содержит некоторые символы, которые не являются частью набора символов этой кодировки, скажем, символ € (евро). Это возможно в XML, если символ представлен как символьная сущность Юникода, в этом случае строка €
(евро):
<?xml version="1.0" encoding="ISO-8859-1"?>
<foo>
<bar>€</bar>
</foo>
Мне нужно получить бар Строка элемента с той же кодировкой, что и в документе, что означает кодирование в ISO-8859-1 (также означает сохранение объектов символов Юникода, которые не являются частью этой кодировки), то есть строка ISO-8859-1 <bar>€</bar>
.
Я не смог добиться этого с помощью метода save XML класса DOMDocument, поскольку он всегда выгружает элементы в UTF-8 (тогда как целые документы всегда в кодировке их объявления XML):
$DD = new DOMDocument;
$DD -> load('foo.xml');
$dump = $DD -> saveXML($DD -> getElementsByTagName('bar') -> item(0));
Переменная $dump
привела к появлению строки UTF-8 <bar>€</bar>
.
Обратите внимание, что элементы выгружаются также с объектами Unicode, преобразованными в фактические символы UTF-8.
Итак, как мне получить строку ISO-8859-1 <bar>€</bar>
? XML парсеры предназначены для выполнения такого рода задач или я должен просто использовать регулярные выражения для чего-то еще?