preg_replace(或其他)删除重复的标签

时间:2011-06-18 00:38:30

标签: php html regex

我正在将两个HTML文件合并在一起,因此,它们有重复的<head> </head><html> </html><body> </body>标记。有没有办法让preg_replace删除 第二批次的重复标记,以便第二个文档的内容混合在一起没有任何问题?

如果不是preg_replace,还有另一种方法吗?

概念信息:

在这种情况下,有两个文件。最终会有更多。

每个文件都是这样开始的:

<html>
<head>
<style type='text/css'>
(Template Data)
</style>
</head>
<body>

我的脚本正在获取这些文件(存在于某个目录中),并创建一个组合两个输出的新文件。但是,结果如下:

<html>
<head>
<style type='text/css'>
(Template Data)
</style>
</head>
<body>
blah blah blah
<html>
<head>
<style type='text/css'>
(Template Data)
</style>
</head>
<body>
blah blah blah 2

这会创建重复的标签。所需的输出是:

<html>
<head>
<style type='text/css'>
(Template Data)
</style>
</head>
<body>
Blah blah blah
Blah blah blah 2

基本上删除了通过while循环处理的第一个HTML文件之外的所有HTML文件的头部数据

非常感谢!

2 个答案:

答案 0 :(得分:1)

您可以在合并它之前在第二个HTML 上应用标记删除,然后将第一个HTML与剥离的第二个HTML合并。

如果您要合并更多HTML,这是一个伪代码示例:

$strip_tags = false;
foreach ($htmls_to_merge as $html) {
    if ($strip_tags) { // this will be false in the first iteration, then true 
        $html = what you do to strip the tags;
    }
    merge;
    $strip_tags = true;
}

答案 1 :(得分:0)

您可以尝试SoftSnow Merger。不是一种非常黑客的做事方式,只要它有效......