php 使用 domxpath读写元素

php本身自带了,DomXpath,可以方便提取网页中的元素内容. 为了方便操作还需要启用tidy扩展包, windows系统在php.ini 中的extensions=php_tidy.dll行去掉注释即可.

http://php.net/manual/zh/class.domxpath.php


<?php
$content= file_get_contents('http://php.net');
$document = new DOMDocument();
$document->strictErrorChecking = false;

//使用tidy规范网页中不规范的内容,否则可能导致document出错
$tidy     = new tidy;
$content = $tidy->repairString($content);
//使用utf-8编码
$content = mb_convert_encoding($content, 'UTF-8');

$document->loadXML(
    $content,
    LIBXML_NOERROR | LIBXML_NONET | LIBXML_NOWARNING | LIBXML_NOCDATA
);

$xpath = new DOMXPAth($document);
//选择要查找的id
$elements = $xpath->query("//*[@id='intro']");

if (!is_null($elements)) {
  foreach ($elements as $element) {
    echo "[". $element->nodeName. "]";
  }
}
?>

更详细的使用方法:

    XPath简介  
      
    XPath是W3C的一个标准。它最主要的目的是为了在XML1.0或XML1.1文档节点树中定位节点所设计。目前有XPath1.0和XPath2.0两个版本。其中Xpath1.0是1999年成为W3C标准,而XPath2.0标准的确立是在2007年。W3C关于XPath的英文详细文档请见:http://www.w3.org/TR/xpath20/ 。  
      
       
      
    XPath是一种表达式语言,它的返回值可能是节点,节点集合,原子值,以及节点和原子值的混合等。XPath2.0是XPath1.0的超集。它是对XPath1.0的扩展,它可以支持更加丰富的数据类型,并且XPath2.0保持了对XPath1.0的相对很好的向后兼容性,几乎所有的XPath2.0的返回结果都可以和XPath1.0保持一样。另外XPath2.0也是XSLT2.0和XQuery1.0的用于查询定位节点的主表达式语言。XQuery1.0是对XPath2.0的扩展。关于在XSLT和XQuery中使用XPath表达式定位节点的知识在后面的实例中会有所介绍。  
      
       
      
    在学习XPath之前你应该对XML的节点,元素,属性,原子值(文本),处理指令,注释,根节点(文档节点),命名空间以及对节点间的关系如:父(Parent),子(Children),兄弟(Sibling),先辈(Ancestor),后代(Descendant)等概念有所了解。这里不在说明。  
      
      
    XPath路径表达式  
      
    在本小节下面的内容中你将可以学习到:  
      
    路径表达式语法  
    相对/绝对路径  
    表达式上下文  
    谓词(筛选表达式)及轴的概念  
    运算符及特殊字符  
    常用表达式实例  
    函数及说明  
      
      
    路径表达式语法:  
       
      
    路径 = 相对路径 | 绝对路径  
    XPath路径表达式 = 步进表达式 | 相对路径 "/"步进表达式。  
    步进表达式=轴 节点测试 谓词  
    说明:  
      
    其中轴表示步进表达式选择的节点和当前上下文节点间的树状关系(层次关系),节点测试指定步进表达式选择的节点名称扩展名,谓词即相当于过滤表达式以进一步过滤细化节点集。  
    谓词可以是0个或多个。多个多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值