繁体   English   中英

从PHP循环中生成XML文件

[英]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.txtanswer.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM