您当前的位置: 首页 > 网站编程 > PHP教程 > 用PHP代替JS玩转DOM的思路及示例代码

用PHP代替JS玩转DOM的思路及示例代码

作者:不详 来源:网络 发布时间: 2014-07-30 09:19 点击:
事情的起源比较简单,我需要把一个导航页的数据整理好写入数据库。一个比较直观的方法是对html文件进行分析,通用的方法是用php的正则表达式来匹配。但是这样做开发和维护都很困难,代码可读性非常差。 导航页的数据都是规则的排列在DOM树当中的,用JS可以用几个循环轻

用PHP代替JS玩转DOM的思路及示例代码

  事情的起源比较简单,我需要把一个导航页的数据整理好写入数据库。一个比较直观的方法是对html文件进行分析,通用的方法是用php的正则表达式来匹配。但是这样做开发和维护都很困难,代码可读性非常差。

  导航页的数据都是规则的排列在DOM树当中的,用JS可以用几个循环轻松的对其进行操作,而且JS需要依赖浏览器,操作数据库很困难。其实PHP就有现成的类库对DOM树种的节点进行增删改查操作,在此做一些笔记。

  这里涉及到2个类 DOMDocument 和 DOMXPath。

  其实思路比较明确,就是通过DOMDocument将一个html file转换成DOM树的数据结构,再用DOMXPath的实例去搜索这个DOM树,拿到想要特定节点,接下来就可以对当前节点的子树进行遍历,得到想要的结果。

  在当前目录下有一个这样一个导航的html文件 "./hao.html"

  现在需要得到所有标签的中文内容,php代码如下:

  .代码如下:

  //将html/xml文件转换成DOM树

  $dom = new DOMDocument();

  $dom->loadHTMLFile("hao.html");

  //得到所有class为fix的dl标签

  // example 1: for everything with an id

  //$elements = $xpath->query("//*[@id]");

  // example 2: for node data in a selected id

  //$elements = $xpath->query("/html/body/div[@id='yourTagIdHere']");

  // example 3: same as above with wildcard

  //$elements = $xpath->query("*/div[@id='yourTagIdHere']");

  $xpath = new DOMXPath($dom);

  $dls = $xpath->query('//dl[@class="fix"]');

  foreach ($dls as $dl) {

  $spans = $dl->childNodes;

  foreach ($spans as $span) {

  echo trim($span->textContent)."t";

  }

  echo "n";

  }

  ?>

  输出结果如下:

  注意:值得注意的一点是DOMDocument的默认编码方式是Latin,所以在处理utf编码的中文的时候,需要在后面紧跟着填入

  .代码如下:

  在其他位置,或者是只写上都是不识别的哦
分享到:
本文"用PHP代替JS玩转DOM的思路及示例代码"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4