PHP-код для получения набора символов из .php-файла с сообщением об ошибке - PullRequest
1 голос
/ 13 января 2012

Заранее спасибо.

Получение этого предупреждения при использовании приведенного ниже кода:

Предупреждение: file_get_contents (test.php) [function.file-get-contents]: не удалось открыть поток: нет такого файла или каталога в /path/index.php в строке so-n-so.

Вот код, который я использую,

<?php

// Scan directory for files
$dir = "path/";
$files = scandir($dir);

// Iterate through the list of files 
foreach($files as $file)
{
// Determine info about the file
$parts = pathinfo($file);

// If the file extension == php
if ( $parts['extension'] === "php" )
{
// Read the contents of the file
$contents = file_get_contents($file);

// Find first occurrence of opening template tag
$from = strpos($contents, "{{{{{");

// Find first occurrence of ending template tag
$to = strpos($contents,"}}}}}");

// Pull out the unique name from between the template tags
$uniqueName = substr($contents, $from+5, $to);

// Print out the unique name
echo $uniqueName ."<br/>";
}
}
?>

Ответы [ 2 ]

4 голосов
/ 13 января 2012

В сообщении об ошибке говорится, что файл не найден.

Это потому, что scandir() возвращает только базовые имена файлов из вашего каталога. Это не включает имя каталога. Вы можете использовать glob() вместо:

$files = glob("$dir/*.php");

Возвращает путь в списке результатов, а также делает проверку вашего расширения избыточной.

1 голос
/ 13 января 2012

Я бы посоветовал вам исключить . и .. из списка файлов, выбранных scandir() DOCs .

// Iterate through the list of files 
foreach($files as $file) {
    if('.' == $file or '..' == $file) {
        continue;
    }
...

Также вам нужно указать путь перед именем файла:

$contents = file_get_contents($path . $file);
...