Использование специальных символов при добавлении дочернего узла с SimpleXML - PullRequest
1 голос
/ 13 сентября 2011

Я использую SimpleXML для создания XML-файла, который будет читаться флэш-игрой. Идея игры состоит в том, что есть абзац текста, и в этом тексте будут скрыты определенные слова, и пользователь должен угадать, какое слово подходит в этом месте. Игра создана не мной, поэтому у меня нет возможности ее редактировать.

Файл XML выглядит следующим образом:

<page>
    <paragraph>
        All you have to do is <find>find</find> the missing words.
    </paragraph>
</page>

Слово, обернутое тегом <find>, - это слово, которое скрыто в игре, и пользователь должен угадать, что это такое. Вы можете иметь более одного скрытого слова, чтобы сделать игру сложнее.

Моя проблема в том, что когда я использую этот код (это упрощенная версия, моя версия фактически использует данные из формы, но через нее передается та же строка):

$page->addChild('paragraph', 'All you have to do is <find>find</find> the missing words.');

< и > автоматически экранируются, я полностью понимаю, почему они есть, но мне было интересно, есть ли способ предотвратить это? Или, если у кого-нибудь есть идеи, как мне это обойти?

Спасибо.

1 Ответ

2 голосов
/ 13 сентября 2011

Я не думаю, что simplexml способен на что-то подобное,
как насчет DOMDocument?

$doc = new DOMDocument('1.0', 'utf-8');
$doc->loadXML('<page/>');
$paragraph = $doc->createElement('paragraph');
$doc->appendChild($paragraph);

$paragraph->appendChild( new DOMText('All you have to do is ') );
$paragraph->appendChild( new DOMElement('find', 'find') );
$paragraph->appendChild( new DOMText(' the missing words.') );
echo $doc->saveXML();
...