Joz*_*zze 2 html php regex html-table html-parsing
我尝试使用特殊的div容器将所有表格包装在我的内容中,以使它们可用于移动设备.在将表保存在自定义CSS的数据库中之前,我无法将表包装起来.我设法得到内容,然后在页面上打印,我需要preg_replace在那里的所有表.
我这样做,得到所有表格:
preg_match_all('/(<table[^>]*>(?:.|\n)*<\/table>)/', $aFile['sContent'], $aMatches);
Run Code Online (Sandbox Code Playgroud)
问题是让内部部分(?:.|\n)*匹配标记内的所有内容,而不匹配结束标记.现在,表达式匹配所有内容,甚至表格的结束标记......
有没有办法排除结束标记的匹配?
你需要进行非贪婪的比赛:/(<table[^>]*>(?:.|\n)*?<\/table>)/.请注意问号:?.
但是,我会使用DOM解析器:
$doc = new DOMDocument();
$doc->loadHTML($html);
$tables = $doc->getElementsByTagName('table');
foreach($tables as $table) {
$content = $doc->saveHTML($table);
}
Run Code Online (Sandbox Code Playgroud)
虽然使用DOM解析器从HTML文档中提取数据已经更方便,但如果您尝试修改HTML(如您所知),它绝对是更好的解决方案.