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>
。希望这对您有所帮助!
我是第一次使用 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>
。希望这对您有所帮助!