【发布时间】:2018-07-18 01:36:37
【问题描述】:
我正在为 FAQ 构建实时搜索,为此,我需要一个 XML 文档来存储实时搜索建议。
问题是FAQ会经常更新,我不想每次都碰代码。
因此,我正在尝试制作一个 PHP 文件,当我们打开它时会生成一个新的 XML 文件。由于不同文件夹中有很多FAQ项目,我需要脚本自动查找特定目录中的所有FAQ项目。 FAQ 项目存储在 TXT 文件中,这些文件存储在使用数字作为文件名(1、2、3 等)的目录中,因此我可以轻松添加/修改/删除它们。
路径如下所示:faqs/professionals/1/question.txt 或 faqs/professionals/2/question.txt对于第二个常见问题解答项目或 faqs/students/1/question.txt对于不同主题中的常见问题解答项目。
例如,如果我想添加一个新的常见问题解答项目,我只需创建一个文件夹,比如说“3”,然后在其中添加 2 个文本文件(question.txt 和 answer.txt)。然后,我会运行 PHP 脚本,以便 XML 文件更新建议,同时考虑到新的常见问题项目“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")
?>
一旦这个脚本开始工作,当我们点击一个建议时,我会尝试让 livesearch 在文本输入下方显示 answer.txt 的内容。但这已经是另一个问题了……
任何帮助将不胜感激。 :)
【问题讨论】:
标签: php xml loops foreach livesearch