繁体   English   中英

如何在PHP中根据CSV数据生成一系列HTML页面?

[英]How to generate in PHP a series of HTML pages based on CSV data?

一个问题:需要在 PHP 脚本中生成一系列 HTML 页面,其中包含从 CSV 中的每一行数据输出的数据(TITLE、DESCRIPTION、H1、IMG、Text、A HREF = "URL")。

$image_number
$image_name
$title
$description
$image_source
$keywords
$url
$page_name

也就是说,实际上CSV中的每一行,在PHP>中处理时,根据给定的单个模板,即每个单独的物理页面(服务器上指定地址处的$页面名称)将页面交给gallery> HTML或PHP目录) 用这个字符串的 CSV 文件中的数据每个变量的值: $title, $ description, $h1, $image_source, $keywords, $image(number), $url = ...

这对于在 Google 图片中建立索引是必要的,但与 MySQL 通信来处理查询还没有意义。

CSV 目录: https : //drive.google.com/file/d/1F_zWVaFDtjp82NDMZdvhWHyB1GYq4BmG/view?usp=sharing

用于处理 CSV 和卸载模板页面的示例 PHP 代码:(* 据我所知 - 并写道,可能存在错误)。

<?php
    function CSVtoHTML {
        $row = 1;
if (($handle = fopen ("catalog.csv", "r"))! == FALSE) {
  while (($data = fgetcsv ($handle, 30, ","))! == FALSE) {
    for each ($row[i]) {
                $column[1] = $image_number;
                $column[2] = $image_name;
                $column[3] = $title;
                $column[4] = $description;
                $column[5] = $image_source;
                $column[6] = $url;
                $column[7] = $page_name;
                $content = '<! doctype html>
                <html lang="en">
                    <head>
                        <meta charset = "UTF-8">
                        <title>'.$title.'</title>
                        <meta description = "'.$ description.'" />
                    </head>
                    <body>
                        <div class="content">
                            <h1> '.$h1.'</h1>
                            <img src = "'.$image_source.'" alt = "">
                            <h2> '.$image_name.' </h2>
                            <p> Keywords: '.$keywords.' </p>
                            <p> <a href="/register?value='.$image_number.'"> Buy now </a> </p>
                        </div>
                    </body>
                </html> ';
/ * How to write data in HTML with UTF-8 encoding to a folder on the server with a given name? * /
                $htmldata = file_get_contents ($content);
                $htmldata = mb_convert_encoding ($htmldata, 'UTF-8');
                file_put_contents ('graphics/'.$page_name.'.html', $htmldata);
           }
           fclose ($handle);
       }
       return $data;
       echo "Catalog generated now"
    }
    else {
        echo "Catalog in CSV is empty or broken."
    }
}
?>

CSV 中的每一行,在 PHP 中处理时,根据给定的单个模板将页面输出到 HTML 目录中的图形,即每个单独的物理页面(服务器上指定地址的名称 $ page_name)以及来自 CSV 文件的数据给定字符串,每个变量的值:$title, $description, $h1, $image_source, $keywords, $image (number), $url = ...

这对于在 Google 图片中建立索引是必要的,但与 MySQL 通信来处理查询还没有意义。

你最好制作一些动态的东西而不是创建 .html 文件而是回答。

第一行是标题,将其存储在一个变量中,然后将它与array_combine与行一起使用以创建关联数组,尽管您只能通过索引访问。

<?php
function CSVtoHTML() {
    $row = 0;
    $header = [];
    if (($handle = fopen("catalog.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

            // first line is header, grab it then continue
            if ( $row === 0) {
                $header = $data;
                $row++;
                continue;
            }

            // make associative array from header and data
            $data = array_combine($header, $data);

            // make document (you need to work on this, but your see var is accessed by header name)
            $content = '<!doctype html>
                <html lang="en">
                    <head>
                        <meta charset = "UTF-8">
                        <title>'.$data['Title'].'</title>
                        <meta description = "'.$data['Description'].'" />
                    </head>
                    <body>
                        <div class="content">
                            <h1> '.$data['Title'].'</h1>
                            <img src="'.$data['Image Source'].'" alt>
                            <h2> '.$data['Image Name'].' </h2>
                            <p> Keywords: '.$data['Keywords'].' </p>
                            <p> <a href="/register?value='.$data['Image Number'].'"> Buy now </a> </p>
                        </div>
                    </body>
                </html> ';

            // make the file
            file_put_contents('./graphics/'.$data['Page Name'], $content);

            $row++;
        }
        fclose($handle);
    }
}

// and don't forget to call it
CSVtoHTML();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM