2013-06-28 4 views
0

У меня есть страница обзора новостей и папка php-файлов, которую я хотел бы включить отдельно. Вместо того, чтобы вручную включать каждый из них в мою обзорную страницу, я думал, что буду использовать php для сканирования папки для php-файлов и распечатать их как оператор include.glob - папка сканирования для файлов новостей новостей php

У меня есть следующий код:

<?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"); ?> 

В конечном счете я хотел написать функцию PHP, которая сканирует папку в ROOT/assets/news/form/ для всех PHP файлов, и включают в себя все файлы с тем же имя из папки ROOT/assets/news/overview.

Моя страница Обзор новостей в настоящее время в /news/index.php

Может кто-нибудь помочь мне с этим?

+0

«Я думал, что я хотел бы использовать PHP для сканирования папки для PHP файлов, а также распечатать их как включить заявление» - это хорошо, пока вы не получите нежелательную PHP файл в директории, то вы автоматически включать Это. Я бы придерживался ручного включения или, по крайней мере, ограничивал их теми, которые, как вы знаете, хороши. – Revent

+0

'echo file_get_contents ($ file);' – Rob

+0

вы считаете, используя db, если эти «новостные» файлы являются просто text \ html –

ответ

1

Здесь, дать этому водоворот: (испытано)

Испытано на моем сервере, используя 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."; 

} 

?> 
+0

С этим я в настоящее время получаю следующую ошибку: Предупреждение: natcasesort() ожидает, что параметр 1 будет массивом, boolean указан в httpROOT/news/index.php в строке 113 Предупреждение: неверный аргумент, предоставленный foreach() в httpROOT/news /index.php в строке 115 –

+0

@LukeCottingham Это странно. Это сработало для меня. Позвольте мне перейти дважды, но я уверен, что это точный синтаксис, который я использовал. Дай мне минуту. –

+0

@ LukeCottingham Ну, это самая вещь БИЗАРЕ. После тестирования того, что я опубликовал, он работал отлично. Теперь, внезапно, это показывает мне несколько копий. Я честно не знаю, что случилось внезапно. Я попробую переделать его и дам вам знать. –

1

Изменение:

foreach($articles as $article) { 

к:

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

сдирать префикс каталога в результате glob().