PHP: массив $ _POST для XML-файла и отображения результатов - PullRequest
1 голос
/ 12 марта 2011

Я создаю страницу «Madlibs», где посетители могут создавать забавные истории в Интернете. Исходные файлы в формате XML с пробелами, заключенными в теги XML

(Such as blablabla <PluralNoun></PluralNoun> blablabla <Verb></Verb> ).

Данные формы создаются с использованием XSL, а результаты сохраняются с использованием массива $ _POST. Как разместить массив $ _POST между соответствующими тегами XML, а затем отобразить результат на странице? Я уверен, что он использует оператор «foreach», но я просто недостаточно знаком с PHP, чтобы выяснить, какие функции использовать. Любая помощь будет великолепна.

Спасибо, E

Ответы [ 2 ]

1 голос
/ 12 марта 2011

Я не уверен, хорошо ли я понял вашу проблему, но думаю, что это может помочь:

// mocking some $_POST variables
$_POST['Verb'] = 'spam';
$_POST['PluralNoun'] = 'eggs';

// original template with blanks (should be loaded from a valid XML file)
$xml = 'blablabla <PluralNoun></PluralNoun> blablabla <Verb></Verb>';
$valid_xml = '<?xml version="1.0"?><xml>' . $xml . '</xml>';

$doc = DOMDocument::loadXML($valid_xml, LIBXML_NOERROR);
if ($doc !== FALSE) {
    $text = ''; // used to accumulate output while walking XML tree
    foreach ($doc->documentElement->childNodes as $child) {
        if ($child->nodeType == XML_TEXT_NODE) { // keep text nodes
            $text .= $child->wholeText;
        } else if (array_key_exists($child->tagName, $_POST)) {
            // replace nodes whose tag matches a POST variable
            $text .= $_POST[$child->tagName];
        } else { // keep other nodes
            $text .= $doc->saveXML($child);
        }
    }
    echo $text . "\n";
} else {
    echo "Failed to parse XML\n";
}
0 голосов
/ 12 марта 2011

Вот синтаксис PHP foreach. Надеюсь, это поможет

$arr = array('fruit1' => 'apple', 'fruit2' => 'orange');
foreach ($arr as $key => $val) {
    echo "$key = $val\n";
}

и вот код для цикла через переменные $ _POST:

foreach ($_POST as $key => $val) {
    echo "$key = $val\n";
    // then you can fill each POST var to your XML
    // maybe you want to use PHP str_replace function too
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...