PHP DomXPath - Select html 代码,除了 header、内容和页脚

PHP DomXPath - Select html code except header, content and footer

我是第一次使用 DomXPath,我不知道如何 select 一些 html 代码。

例如我有:

<!DOCTYPE html>
<html lang="">
<head>
<title>Dodmond</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link href="layout/styles/layout.css" rel="stylesheet" type="text/css" media="all">
</head>
<body id="top">
<div class="header">
header content
</div>
<div class="content">
content
</div>
<div class="footer">
footer content
</div>
<a id="backtotop" href="#top"><i class="fa fa-chevron-up"></i></a>
<!-- JAVASCRIPTS -->
<script src="layout/scripts/jquery.min.js"></script>
<script src="layout/scripts/jquery.backtotop.js"></script>
<script src="layout/scripts/jquery.mobilemenu.js"></script>
<script src="layout/scripts/jquery.flexslider-min.js"></script>
</body>
</html>

我需要制作 2 个 select 离子。先用headerdiv

之前的代码

<!DOCTYPE html>
<html lang="">
<head>
<title>Dodmond</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link href="layout/styles/layout.css" rel="stylesheet" type="text/css" media="all">
</head>
<body id="top">

第二个是 footer div

之后的代码

<a id="backtotop" href="#top"><i class="fa fa-chevron-up"></i></a>
<!-- JAVASCRIPTS -->
<script src="layout/scripts/jquery.min.js"></script>
<script src="layout/scripts/jquery.backtotop.js"></script>
<script src="layout/scripts/jquery.mobilemenu.js"></script>
<script src="layout/scripts/jquery.flexslider-min.js"></script>
</body>
</html>

我该怎么做?我应该使用什么?

谢谢

编辑:我找到了如何删除所有 div,但我不知道如何在 header 和 页脚后的代码.

目前我得到了这个:

    $html = file_get_contents('..');
    $doc = new \DOMDocument();
    libxml_use_internal_errors(true);
    $doc->loadHTML($html);
    $finder = new \DomXPath($doc);
            foreach ($finder->evaluate('//div') as $node) {
        $node->parentNode->removeChild($node);
    }

这给了我一个变量中的代码。我该如何分割它?

所以我不完全确定你是否仍然需要帮助解决这个问题,但我有一个 regex 可以匹配你的 "header" <div>:[=26= 之前的所有内容]

^<[\w\n\s="<>\/\-,.#!m]+(?=<div)

上面的模式将匹配你的 HTML 的这个块:

<!DOCTYPE html>
<html lang="">
<head>
<title>Dodmond</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link href="layout/styles/layout.css" rel="stylesheet" type="text/css" media="all">
</head>
<body id="top">

至于你的尾端HTML,在你的<div class="footer">标签之后获取所有内容有点太棘手了,但是如果你将它从div切换到footer,你可以很容易地做到这一点。以下是使用 footer:

的示例
<footer class="footer">
   footer content
</footer>

以下将匹配从 </footer> 一直到结束 </html> 标记的所有内容:

(<\/footer>)[\w\n\s="<>\/\-,.#!m]+<\/html>

请注意: 以上 regex 包括 </footer>。希望这对您有所帮助!