用于php新闻文章文件的glob-scan文件夹

时间:2013-06-28 00:58:15

标签: php include glob scandir

我有一个新闻概述页面,以及我想单独包含的php文件的文件夹。 我没想手动将每一个都包含在我的概述页面中,而是想用php扫描文件夹中的php文件,并将其作为include语句打印出来。

我有以下代码:

<?php $articles = glob("/assets/news/form/*.php"); ?>
<?php
if(count($articles)) {
  natcasesort($articles);
  foreach($articles as $article) {
  ?>
      <?php include("$_SERVER[DOCUMENT_ROOT]/assets/news/overview/$article"); ?>

<?php
    }} else {
      echo "Sorry, no articles to display!";
    }
?>

我没有这个语法,但我没有收到任何输出。只是文章所在的空白区域。

我想要的输出是这样的:

<?php include("$_SERVER[DOCUMENT_ROOT]/assets/news/overview/1.php"); ?>
<?php include("$_SERVER[DOCUMENT_ROOT]/assets/news/overview/2.php"); ?>
<?php include("$_SERVER[DOCUMENT_ROOT]/assets/news/overview/3.php"); ?>
<?php include("$_SERVER[DOCUMENT_ROOT]/assets/news/overview/4.php"); ?>
<?php include("$_SERVER[DOCUMENT_ROOT]/assets/news/overview/5.php"); ?>
<?php include("$_SERVER[DOCUMENT_ROOT]/assets/news/overview/6.php"); ?>

最终我想编写一个扫描ROOT/assets/news/form/文件夹的php函数 对于所有php文件,并包含文件夹ROOT/assets/news/overview中具有相同名称的所有文件。

我的新闻概述页面目前位于/news/index.php

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

变化:

foreach($articles as $article) {

为:

foreach($articles as $article) {
    $article = basename($article);

删除结果glob()中的目录前缀。

答案 1 :(得分:1)

在这里,给它一个旋转:(TESTED)

使用absolute路径在我的服务器上测试。

<?php

// path to .php files must be absolute path
// example: /server/user/f/fred/forms/*.php
// May have to modify your path if it's not absolute

// You may have to use this, if doesn't work
// $articles = glob("$_SERVER[DOCUMENT_ROOT]/assets/news/forms/*.php");
$articles = glob("/assets/news/forms/*.php");

if(count($articles)) {
  natcasesort($articles);
  // rsort($articles); // use rsort for descending order

foreach($articles as $article) {
    $article = basename($article);

// You may have to use this, if doesn't work
// include("$_SERVER[DOCUMENT_ROOT]/assets/news/forms/$article");
include("$_SERVER[DOCUMENT_ROOT]/assets/news/forms/$article");

      }

    }

else {

echo "Sorry, no articles.";

}

?>