2011-03-12 27 views
1

我創建了一個「Madlibs」頁面,訪問者可以在其中創建有趣的故事。原始文件是XML格式封裝在XML標籤

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

使用XSL創建表單數據和結果使用$ _POST數組保存的空白。如何在匹配的XML標籤之間發佈$ _POST數組,然後將結果顯示在頁面上?我確信它使用了「foreach」語句,但我對PHP不太瞭解,不知道要使用哪些函數。任何幫助都會很棒。

感謝, ē

回答

1

我不知道如果我理解你的問題非常好,但我認爲這可能幫助:

// 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

這裏是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 
}