PHP:$\u将数组发布到XML文件并显示结果
我正在创建一个“Madlibs”页面,访问者可以在这里在线创建有趣的故事。原始文件是XML格式,空白部分包含在XML标记中PHP:$\u将数组发布到XML文件并显示结果,php,xml,arrays,forms,post,Php,Xml,Arrays,Forms,Post,我正在创建一个“Madlibs”页面,访问者可以在这里在线创建有趣的故事。原始文件是XML格式,空白部分包含在XML标记中 (Such as blablabla <PluralNoun></PluralNoun> blablabla <Verb></Verb> ). (比如布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉
(Such as blablabla <PluralNoun></PluralNoun> blablabla <Verb></Verb> ).
(比如布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉)。
表单数据使用XSL创建,结果使用$\u POST数组保存。如何在匹配的XML标记之间发布$\u post数组,然后将结果显示到页面?我确信它使用了一个“foreach”语句,但我对PHP还不够熟悉,不知道应该使用什么函数。任何帮助都会很好
谢谢,
E我不确定我是否理解您的问题,但我认为这可能会有所帮助:
// 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";
}
//模拟某些$\u POST变量
$_POST['Verb']='spam';
$_POST['PluralNoun']='egs';
//带空格的原始模板(应从有效的XML文件加载)
$xml='blablablablabla';
$valid_xml=''$xml‘’;
$doc=DOMDocument::loadXML($valid\uxml,LIBXML\unoerror);
如果($doc!==FALSE){
$text='';//用于在遍历XML树时累积输出
foreach($doc->documentElement->childNodes作为$child){
如果($child->nodeType==XML\u TEXT\u NODE){//保留文本节点
$text.=$child->wholeText;
}else如果(数组\键\存在($child->tagName,$\ POST)){
//替换标记与POST变量匹配的节点
$text.=$\u POST[$child->tagName];
}else{//保留其他节点
$text.=$doc->saveXML($child);
}
}
回显$text。“\n”;
}否则{
echo“解析XML失败\n”;
}
我不确定自己是否完全理解您的问题,但我认为这可能会有所帮助:
// 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";
}
//模拟某些$\u POST变量
$_POST['Verb']='spam';
$_POST['PluralNoun']='egs';
//带空格的原始模板(应从有效的XML文件加载)
$xml='blablablablabla';
$valid_xml=''$xml‘’;
$doc=DOMDocument::loadXML($valid\uxml,LIBXML\unoerror);
如果($doc!==FALSE){
$text='';//用于在遍历XML树时累积输出
foreach($doc->documentElement->childNodes作为$child){
如果($child->nodeType==XML\u TEXT\u NODE){//保留文本节点
$text.=$child->wholeText;
}else如果(数组\键\存在($child->tagName,$\ POST)){
//替换标记与POST变量匹配的节点
$text.=$\u POST[$child->tagName];
}else{//保留其他节点
$text.=$doc->saveXML($child);
}
}
回显$text。“\n”;
}否则{
echo“解析XML失败\n”;
}
以下是PHP foreach语法。希望能有帮助
$arr = array('fruit1' => 'apple', 'fruit2' => 'orange');
foreach ($arr as $key => $val) {
echo "$key = $val\n";
}
下面是循环通过$\u 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
}
下面是PHP foreach语法。希望能有帮助
$arr = array('fruit1' => 'apple', 'fruit2' => 'orange');
foreach ($arr as $key => $val) {
echo "$key = $val\n";
}
下面是循环通过$\u 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
}