PHP DomXPath - 选择除标题,内容和页脚外的其他代码

问题描述:

我第一次使用DomXPath,但不知道如何选择一些html代码。PHP DomXPath - 选择除标题,内容和页脚外的其他代码

例如,我已经有了:

<!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种选择。先用以前头的div代码

<!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

<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,但我不知道如何代码头和页脚后代码之前分开。

目前,我有这样的:它可以给我一个变量的代码

$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,将你的“头” <div>之前匹配的一切:

^<[\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">标签之后得到的一切,但如果你从它切换至footer,您可以轻松完成此操作。下面是一个使用footer的例子:

<footer class="footer"> 
    footer content 
</footer> 

下会匹配一切从</footer>一路直至收盘</html>标签:

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

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

+0

谢谢。我通过添加注释''解决了页脚,然后使用爆炸解压缩代码。 –