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

Php preg_replace(或其他)删除重复标签,php,html,regex,Php,Html,Regex,我将两个HTML文件合并在一起,因此,它们有重复的、和标记。有没有办法让preg_replace只删除第二批重复标记,这样第二个文档的内容就可以毫无问题地混合在一起 如果没有preg_替换,是否有其他方法 概念信息: 在本例中,有两个文件。最终会有更多 每个文件的开头如下所示: <html> <head> <style type='text/css'> (Template Data) </style> </head> <body&

我将两个HTML文件合并在一起,因此,它们有重复的、和标记。有没有办法让preg_replace只删除第二批重复标记,这样第二个文档的内容就可以毫无问题地混合在一起

如果没有preg_替换,是否有其他方法

概念信息:

在本例中,有两个文件。最终会有更多

每个文件的开头如下所示:

<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文件的头部数据


非常感谢

您只需在合并第二个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;
}

你可以试试。这不是一种非常黑客式的处理方式,但只要它有效…

你能告诉我为什么你得出结论,正则表达式是你的解决方案吗?我知道它可以删除整个标记和其中的所有内容,希望可能有一个参数只搜索第二个副本。@zackt147:所以,没有确凿的理由。DOM操作更适合于这项工作。阅读第二个文档时,提取其主体节点的内容并将其插入原始文档的DOM中。没有确凿的原因,因此询问它的原因。干杯@zackt147:那么我建议将你的问题编辑得更一般,不要包含这个假设的解决方案。让答案决定解决方案!另外,请使用@name:syntax on SO来激发回复通知。它通过一个循环合并文件,所以我不知道如何指示哪个是第一个。您可以在循环之前设置$strip_tags=false,然后在循环内部,如果$strip_tags{strip the tags},那么,就在循环结束之前,$strip_tags=true.Oooh。那很聪明。有没有一种方法可以做到一鼓作气?现在我有$somecontent=preg_replace.*.*?*是,$2',$somecontent;只是为了头部标签。@zackt147,我不确定你想用正则表达式实现什么。我投了赞成票。不知道是谁投了反对票。只是好奇,有没有办法用while代替foreach?我从一个sql语句中提取文件名,该语句循环了一段时间,如:$strip\u tags=false$sql=从表中选择*,其中something=something$result=mysql\u query$sql或die mysql\u错误;虽然$row=mysql\u fetch\u array$result{$filename=$row['filename'];if$strip\u tags{$somecontent.=file\u get\u contents$filename;$somecontent2=preg\u replace'.*?is'、$2'、$somecontent2;$strip\u tags=true;}尝试的方法不起作用,但当用户切换时,必须通过PHP与我的网站集成: