PHP 包含 github 个页面的函数

PHP include function for github pages

我有一个 php 网站,来自 php 我只使用了 include,以便更容易地内联重复元素(页眉/页脚)。我想输出一个静态 html 网站,我可以轻松上传到 github 个页面。

是否难以实施甚至可能实施?

UPD 在单独的评论中移动了答案。

此代码将包含 php 网站的目录中的所有内容(包含文件夹和所有扩展名为 php 的文件除外)复制到另一个任意文件夹。并且所有扩展名为 php 的文件都被转换为 html 格式并且(包含文件夹除外)。

请问这是做什么用的?这很简单。您可以方便地处理所有重复元素(header.php、footer.php 等),只需将它们添加到包含文件夹,并在页面本身中添加 via:

<?php include 'includes/header.php'?>

然后,当一切准备就绪后,使用脚本生成静态 html/css/js 站点并将其上传到 github 页面等。需要注意的是github页面不会开始理解php,这一切只是为了方便开发静态html/css/js网站。

!!!脚本必须位于您想要的同一文件夹中,这样您才能得到静态站点!!!

要运行脚本,在控制台进入脚本所在目录,写入:

php copy.php
<?php
$source_dir = "D:\openserver\domains\source.com";

$destination_dir = "D:\openserver\domains\destination.com";

recursive_files_copy($source_dir, $destination_dir);

function recursive_files_copy($source_dir, $destination_dir)
{
    // Open the source folder / directory
    $dir = opendir($source_dir);

    // Create a destination folder / directory if not exist
    @mkdir($destination_dir);

    // Loop through the files in source directory
    while ($file = readdir($dir))
    {
        // Skip . and ..
        if (($file != '.') && ($file != '..') && ($file != 'includes') && (pathinfo($file, PATHINFO_EXTENSION) != 'php'))
        {
            // Check if it's folder / directory or file
            if (is_dir($source_dir . '/' . $file))
            {
                // Recursively calling this function for sub directory
                recursive_files_copy($source_dir . '/' . $file, $destination_dir . '/' . $file);
            }
            else
            {
                // Copying the files
                copy($source_dir . '/' . $file, $destination_dir . '/' . $file);
            }
        }
        else if ((!is_dir($source_dir . '/' . $file)) && (pathinfo($file, PATHINFO_EXTENSION) == 'php'))
        {
            ob_start();
            include $source_dir . '/' . $file;
            $php_to_html = ob_get_clean();
            $fp = fopen($file, "w");
            fwrite($fp, $php_to_html);
            fclose($fp);
            rename(pathinfo($file, PATHINFO_BASENAME) , pathinfo($file, PATHINFO_FILENAME) . '.html');
        }
    }

    closedir($dir);
    // convertphp();
    
}
?>