[英]Generate an XML file out of a PHP loop
我正在为FAQ进行实时搜索,为此,我需要一个XML文档,用于存储实时搜索建议。
问题是FAQ会经常更新,我不想每次都碰代码。
因此,我试图制作一个PHP文件,当我们打开它时会生成一个新的XML文件。 由于不同文件夹中有很多常见问题,因此我需要脚本自动在特定目录中查找所有常见问题。 FAQ项存储在TXT文件中,该文件存储在使用数字作为文件名(1、2、3等)的目录中,因此我可以轻松添加/修改/删除它们。
路径如下所示:第二个FAQ项的faqs / professionals / 1 / question.txt 或 faqs / professionals / 2 / question.txt 或另一个主题中的FAQ项的faqs / students / 1 / question.txt 。
例如,如果我想添加一个新的FAQ项,我只需创建一个文件夹,假设为“ 3”,然后在其中添加2个文本文件( question.txt和answer.txt )。 然后,我将运行PHP脚本,以便XML文件将更新建议,并考虑新的FAQ项“ 3”。
我能够创建一个基于TXT文件内容构建XML文件的脚本。 但是,我无法使其“检测”所有文件夹(FAQ项所在的位置)并将它们添加到XML文件中。
脚本基于此页面: w3schools.com/php/php_ajax_livesearch.asp
这是代码:
<?php
foreach (glob("../faqs/professionals/*",GLOB_ONLYDIR) as $x) {
$pages = array();
$pages [] = array(
'title' => file_get_contents($x.'/question.txt'),
'url' => dirname($x),
);
}
$doc = new DOMDocument();
$doc->formatOutput = true;
$r = $doc->createElement( "pages" );
$doc->appendChild( $r );
foreach( $pages as $link )
{
$b = $doc->createElement( "link" );
$title = $doc->createElement( "title" );
$title->appendChild(
$doc->createTextNode( $link['title'] )
);
$b->appendChild( $title );
$url = $doc->createElement( "url" );
$url->appendChild(
$doc->createTextNode( $link['url'] )
);
$b->appendChild( $url );
$r->appendChild( $b );
}
echo $doc->saveXML();
$doc->save("links.xml")
?>
一旦该脚本开始运行,当我们单击建议时,我将尝试使实时搜索在文本输入下方显示answer.txt的内容。 但这已经是另一个问题了...
任何帮助将不胜感激。 :)
我认为问题在于,当您建立第一个$pages
数组时,您会使用dirname($x)
。 这是目录的目录名称。 因此,glob()返回的路径是faq/professionals/1
而您以它的目录名称结尾,则最终得到faq/professionals
。
所以我认为您需要更改的只是URL的设置...
$pages [] = array(
'title' => file_get_contents($x.'/question.txt'),
'url' => $x
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.