我正在为常见问题解答建立生活搜索,为了这样做,我需要一个XML文档,其中将存储Livesearch建议。
问题是常见问题解答将经常更新,我不想每次触摸代码。
因此,我正在尝试制作一个PHP文件,该文件在我们打开时会生成新的XML文件。由于不同文件夹中有许多常见问题解答项目,因此我需要脚本自动在某个目录中找到所有常见问题解答。FAQ项目存储在TXT文件中,这些文件存储在使用数字作为文件名(1、2、3等(的目录中,因此我可以轻松添加/修改/删除它们。
一条路径看起来像这样: FAQS/PROVERACES/1/QUASION.TXT 或 faqs/professionals/2/Question.txt 对于第二个常见问题项目或 faqs/students/questey.txt 在其他主题中的FAQ项目。
例如,如果我想添加一个新的常见问题项目,我只会创建一个文件夹,假设" 3",然后在内部添加2个文本文件( Question.txt 和答案.txt (。然后,我将运行PHP脚本,以便考虑到新的常见问题解答项目" 3"。
,XML文件将更新建议。我能够根据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在单击建议时在文本输入下方显示答案的内容。但这已经是另一个问题...
任何帮助将不胜感激。:(
我认为问题是,当您构建第一个$pages
数组时,您使用dirname($x)
。这正在以目录的目录名称为单位。因此,glob((正在返回faq/professionals/1
的路径,而您采用的目录名称,您最终会使用faq/professionals
。
所以我认为您需要更改的只是URL的设置...
$pages [] = array(
'title' => file_get_contents($x.'/question.txt'),
'url' => $x
);