【问题标题】:Generate an XML file out of a PHP loop从 PHP 循环中生成 XML 文件
【发布时间】: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


    【解决方案1】:

    我认为问题在于,当您构建第一个 $pages 数组时,您使用的是 dirname($x)。这是取目录的目录名。所以 glob() 正在返回 faq/professionals/1 的路径,并且您使用此目录名称,最终得到 faq/professionals

    所以我认为您需要更改的只是 url 的设置...

    $pages [] = array(
       'title' => file_get_contents($x.'/question.txt'),
       'url' => $x
    );
    

    【讨论】:

      猜你喜欢
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 2011-10-13
      相关资源
      最近更新 更多