我目前正在编写一个函数来解析一些HTML并在必要时添加标记。基本上我有一个像这样的HTML:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse feugiat, nunc at vestibulum egestas.
<script type="c">
#include <stdio.h>
#define debug(var) printf(#var " = %d\n", var)
int main(void)
{
int x = 12;
debug(x)
return 0;
}
</script>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse feugiat, nunc at vestibulum egestas.
<h3>Test Heading</h3>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ultricies luctus metus ut cursus.
<ol>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ol>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ultricies luctus metus ut cursus.
如果您发现段落周围没有<p>
个标签。我想解析此HTML并将正确的标记添加到文本的不同段落。此外,无论使用何种解析器,它都无法触及任何其他有效的HTML。例如,不应更改标题和列表。
我已经使用PHP攻击了一个解决方案,虽然它有效,但看起来不是很快或。
实现这一目标的最佳方法是什么? 我可以使用一个很好的基于PHP或Javascript的解析器吗?
我需要将HTML分解为元素,添加标签并将汇编的HTML写回页面(?)
答案 0 :(得分:1)
我的建议是使用HTML Tidy而不是自己一起黑客攻击。
$output = tidy_repair_string($input);
有关选项列表,请参阅HTML Tidy Configuration Options。根据您的需要,默认行为可能很好。
答案 1 :(得分:0)
当然有一个 http://simplehtmldom.sourceforge.net/
//从字符串
创建DOM$html = str_get_html('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse feugiat, nunc at vestibulum egestas.
<h3>Test Heading</h3>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ultricies luctus metus ut cursus.
<ol>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ol>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ultricies luctus metus ut cursus.
');
$es = $html->find('text');
echo $es; // Output: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ultricies luctus metus ut cursus.
现在你必须用那个文字做点什么;
像这样echo "<p>$es</p>";
现在,您的文字位于<p>
代码