php - 通过 HTML 元素(例如 TABLE)在 PHP 中拆分大型 HTML 文件
问题描述
我正在尝试在 PHP 中解析一个相对较大的 HTML 文件(20 mb)。HTML 文件包含大约 200 个表(TABLE 标记),每个表平均有 50-100 行。我想清理表格 HTML 并将其保存在数据库中。该代码有效,但占用太多内存并且非常慢。
HTML 表是从遗留 SAP 系统导出的,整个文件在一行中,因此无法使用涉及逐行处理的某些技术。
我如何改进此代码以完成它的功能但不花费太多时间并更快地执行。这是我正在使用的
$file = file_get_contents('ro_full.html');
$doc = new DOMDocument();
@$doc->loadhtml($file);
$xpath = new DOMXPath($doc);
// Modify the XPath query to match the content
$i=0;
foreach($xpath->query('//table') as $table) {
echo "<br><br>---TABLE ".$i." ----<br>";
$tableHTML= $table->C14N();
echo preg_replace("/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i",'<$1$2>', $tableHTML);
$i++;
}
解决方案
推荐阅读
- ruby - 错误 Ruby“您的 Ruby 版本是 3.0.2,但您的 Gemfile 指定了 2.7.1”
- python - 如何在 numpy 数组中找到特定值的索引?
- flutter - 如何在具有两个实例对象的变量的类中正确组合两个模式类?
- css - 如何在 Linux 上修复 Laravel 项目中的 css 链接?
- javascript - Res.redirect() 加载为 fetch 而不是重定向?
- python - Python 字典:TypeError:“NoneType”类型的参数不可迭代
- python - Discord Bot AttributeError:“音乐”对象没有属性“_player”
- vue.js - 基本Vue待办事项列表:添加的列表项不显示
- r - 如何在图形的轴上插入点
- leaflet - 缩放时传单层与地图分开移动