gpt4 book ai didi

php - 从 HTML 页面创建 CSV 文件

转载 作者:行者123 更新时间:2023-12-02 07:42:42 27 4
gpt4 key购买 nike

我从数据库中提取记录并将它们存储在一个只有文本的 HTML 页面上。每条记录都存储在 <p> 中段落字段并以换行符分隔 <br />和一行 < hr> .例如:

Company Name<br/>
555-555-555<br />
Address Line 1<br />
Address Line 2<br />
Website: www.example.com<br />

我只需要将这些记录放入一个 CSV 文件中。我将 fputcsv 与 array() 和 file_get_contents() 结合使用,但它会将我网页的整个源代码读取到一个 .csv 文件中,并且很多数据也丢失了。这些是以相同格式存储的多条记录。因此,在上面看到的整个记录​​ block 之后,它由 <hr> 分隔行标记。我想将公司名称读入 Name 列,将电话号码读入 Phone 列,将地址读入 Address 列,将网站读入 Website 列,如下所示。

http://i.stack.imgur.com/00Gxw.png
我该怎么做?

HTML 片段:

            1 Stop Signs<br />
480-961-7446<br />
500 N. 56th Street<br />
Chandler, AZ 85226<br />

<br />
Website: www.1stopsigns.com<br />
<br />
</p><br /><hr><br />

它在 HTML 的源代码中是这样间隔的。

最佳答案

假设您的数据遵循一种模式,其中每条记录都由 <hr> 分隔标记和其中的每个字段由 <br /> 分隔那么您应该能够拆分数据。

有很多方法可以做到这一点,但使用 explode() 可能是一种天真的方法。可能是这样的:

// open a file pointer to csv
$fp = fopen('records.csv', 'w');

// first, split each record into a separate array element
$records = explode('<hr>', $str);

// then iterate over this array
foreach ($records as $record) {

// strip tags and trim enclosing whitespace
$stripped = trim(strip_tags($record));

// explode by end-of-line
$fields = explode(PHP_EOL, $stripped);

// array walk over each field and trim whitespace
array_walk($fields, function(&$field) {
$field = trim($field);
});

// create row
$row = array(
$fields[0], // name
$fields[1], // phone
sprintf('%s, %s', $fields[2], $fields[3]), // address
$fields[6], // web
);

// write cleaned array of fields to csv
fputcsv($fp, $row);
}

// done
fclose($fp);

在哪里$str是您正在解析的页面数据。希望这会有所帮助。

编辑

原来没注意具体的字段要求。更新了示例。

关于php - 从 HTML 页面创建 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9320715/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com