Синтаксический анализатор XML в PHP дважды вызывает функцию-обработчик по умолчанию, когда встречает специальный символ в строке, и поэтому разбивает строку. Я пытался решить эту проблему, используя разные кодировки в заголовке XML, а также в коде PHP, но он все равно разбивает строку:
$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "ISO-8859-1");
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_set_element_handler($parser, "startTag", "endTag");
xml_set_default_handler($parser, 'defaultHandler');
function startTag($p, $name, $attributes)
{
}
function endTag($p, $name)
{
}
function defaultHandler($parser, $data)
{
if(strlen(trim($data)) > 0)
echo '[' . $data . ']' . '<br />';
}
Пример XML:
<variable name="GZH29" type="integer">
<label>This is a small test with a special ë character. Let's try an ë character too</label>
</variable>
Можно было бы ожидать:
[This is a small test with a special ë character. Let's try an ë character too]
Но результат
[This is a small test with a special ]
[ë character. Let's try an ë character too]
Я бы не хотел, чтобы линия была разделена, так что есть идеи, каково решение?