Почему мой цикл foreach () возвращает файлы в мой текущий каталог?

Первоначально я разделил свой cf_replace () и внутренний цикл foreach () в другом файле .php. Когда я запустил свой script.php, который вызывал этот код, все было в порядке. Теперь, когда мне нужно объединить два моих php-скрипта в один, каким-то образом, один из моих циклов foreach () не хранит функцию cf_replace в каталоге, а вместо этого выплевывает пустые файлы в мой текущий каталог! Я долго смотрел на этот код и был бы рад свежим взглядам.

$ip = $argv[1];

// Declare vars - e.g. $currentTime
$htmlDir = "app/HtmlPages/$ip" ."-". "$currentTime/$ip/index.php/art";
...
// Make the directory where the generated HTML files will go.
mkdir( "app/HtmlPages/$ip" ."-". "$currentTime", 0777, false );


// Use wget to recurse over the entire website, downloading every webpage.
$wget_cmd = "wget -P app/HtmlPages/$ip"."-"."$currentTime/ \
--recursive \
--no-clobber \
--domains $ip \
http://$ip/index.php/art/art.htm";
exec ( $wget_cmd );
...
// Iterate through each Html file in $htmlDir and replace with ColdFusion
foreach( new DirectoryIterator( $htmlDir ) as $htm_file)
{
if( $htm_file->isDot () || !$htm_file->isFile ()) {
continue;
}

foreach( new DirectoryIterator ( './cf_templates/' ) as $cf_file )
{
// Checks for all files
if ($cf_file->isDot () || ! $cf_file->isFile ()) {
continue;
}

// Grabs the template name and content to replace
$cf_name = $cf_file->getBasename( $cf_file->getExtension() );
$cf_code = file_get_contents( './cf_templates/' . $cf_file );

cf_replace( $cf_name, $cf_code, $htm_file );

}

echo "Finished replacing Html code in $htm_file.\r\n";

}
...

function cf_replace( $name, $new_code, $source ) {
$content = file_get_contents( $source );

$start = preg_quote( "<!-- $name COLDFUSION BEGIN -->" , "#");
$end = preg_quote( "<!-- $name COLDFUSION END -->", "#" );

$needle_search = '#( $start )(.*?)( $end )#si';
$temp = preg_replace( $needle_search, $new_code, $content );
$temp = file_put_contents( $source, $temp );

return $temp;
}

Я думаю, что file_put_contents () в cf_replace () просто поместит файлы обратно в исходный файл, который находится в той же директории … нет? Любая помощь приветствуется!

0

Решение

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

cf_replace($name, $cf_code, "$htmlDir/$htmFile");
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector