我正在编写一个PHP命令行脚本,使用Markdownify库将数百个HTML片段转换为Markdown .但是,我遇到过一些情况,我的某些HTML结构不够好,无法与Markdownify一起使用.所以我首先需要通过一些库来发送我的HTML,它可以清理它并添加可选的结束标记等.我将使用HTML的部分块,而不是完整的HTML文档,因此返回的HTML必须是部分的(和不包括doctype等).
您知道可以将HTML转换为XHTML的PHP脚本吗?
利用PHP DOMDocument类.它会格式化您的HTML,即使它已被破坏.然后,您可以提取已清理的HTML:
libxml_use_internal_errors(true); //use this to prevent warning messages from displaying because of the bad HTML
$doc = new DOMDocument();
$doc->loadHTML($badHtml);
$goodHtml = $doc->saveHTML();
Run Code Online (Sandbox Code Playgroud)
这将返回一个完整的HTML文档(在body标签中包含已清理的版本),即使我传递了HTML的部分块,因此我可以使用此正则表达式提取已清理的部分:
$goodHtmlPartial = trim(ereg_replace('(.*)<body>(.*)</body>(.*)', '\2', $goodHtml));
Run Code Online (Sandbox Code Playgroud)
有什么理由不使用整洁?
http://php.net/manual/en/book.tidy.php
它可以清理你的HTML,只给你身体部分.
$tidy = tidy_repair_string($content,array(
'indent' => true,
'output-html' => true,
'wrap' => 80,
'show-body-only' => true,
'clean' => true,
'input-encoding' => 'utf8',
'output-encoding' => 'utf8',
'logical-emphasis' => false,
'bare' => true,
));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9805 次 |
| 最近记录: |