hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP问题 - 正文 请牢记本站网址www.sosophp.cn

php解析器是什么【php题目】

2019-11-26PHP问题搜搜PHP网60°c
A+ A-

内建的 Expat 剖析器使在 PHP 中处置惩罚 XML 文档成为可能。

什么是 XML?

XML 用于形貌数据,其中心是数据是什么。XML 文件形貌了数据的构造。

在 XML 中,没有预定义的标签。您必需定义本身的标签。

什么是 Expat?

如需读取和更新 - 建立并处置惩罚 - 一个 XML 文档,您须要 XML 剖析器。

有两种基础的 XML 剖析器类型:

·基于树的剖析器:这类剖析器把 XML 文档转换为树型构造。它剖析整篇文档,并供应了 API 来接见树种的元素,比方文档对象模子 (DOM)。

·基于事宜的剖析器:将 XML 文档视为一系列的事宜。当某个细致的事宜发作时,剖析器会挪用函数来处置惩罚。

Expat 剖析器是基于事宜的剖析器。

基于事宜的剖析器集合在 XML 文档的内容,而不是它们的效果。正因如此,基于事宜的剖析器可以比基于树的剖析器更快地接见数据。

请看下面的 XML 片断:

<from>John</from>

基于事宜的剖析器把上面的 XML 报告为一连串的三个事宜:

·最先元素:from

·最先 CDATA 部份, 值:John

·封闭元素: from

上面的 XML 类型包含了情势优越的 XML。不过这个例子是无效的 XML,由于没有与它关联的文档类型声明 (DTD),也没有内嵌的 DTD。

相干引荐:《php入门教程》

不过,在运用 Expat 剖析器时,这没有区分。Expat 是不搜检有效性的剖析器,疏忽任何 DTD。

作为一款基于事宜、非考证的 XML 剖析器,Expat 疾速且轻盈,非常合适 PHP 的 web 应用顺序。

诠释:XML 文档必需情势优越,不然 Expat 会生成毛病。

装置

XML Expat 剖析器是 PHP 中心的组成部份。无需装置就可以运用这些函数。

XML 文件

将在我们的例子中运用下面的 XML 文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

初始化 XML 剖析器

我们要在 PHP 中初始化 XML 剖析器,为差别的 XML 事宜定义处置惩罚器,然后剖析这个 XML 文件。

例子:

<?php 
//Initialize the XML parser
$parser=xml_parser_create();
 
//Function to use at the start of an element
function start($parser,$element_name,$element_attrs)
 {
 switch($element_name)
  {
  case "NOTE":
  echo "-- Note --<br />";
  break; 
  case "TO":
  echo "To: ";
  break; 
  case "FROM":
  echo "From: ";
  break; 
  case "HEADING":
  echo "Heading: ";
  break; 
  case "BODY":
  echo "Message: ";
  }
 }
 
//Function to use at the end of an element
function stop($parser,$element_name)
 {
 echo "<br />";
 }
 
//Function to use when finding character data
function char($parser,$data)
 {
 echo $data;
 }
 
//Specify element handler
xml_set_element_handler($parser,"start","stop");
 
//Specify data handler
xml_set_character_data_handler($parser,"char");
 
//Open XML file
$fp=fopen("test.xml","r");
 
//Read data
while ($data=fread($fp,4096))
 {
 xml_parse($parser,$data,feof($fp)) or 
 die (sprintf("XML Error: %s at line %d", 
 xml_error_string(xml_get_error_code($parser)),
 xml_get_current_line_number($parser)));
 }
 
//Free the XML parser
xml_parser_free($parser);
 
?>

以上代码的输出:

-- Note --
To: George
From: John
Heading: Reminder
Message: Don't forget the meeting!

事情道理诠释:

·经由过程 xml_parser_create() 函数初始化 XML 剖析器

·建立合营差别事宜处置惩罚顺序的的函数

·增加 xml_set_element_handler() 函数来定义,当剖析器碰到最先和完毕标签时实行哪一个函数

·增加 xml_set_character_data_handler() 函数来定义,当剖析器碰到字符数据时实行哪一个函数

·经由过程 xml_parse() 函数来剖析文件 "test.xml"

·万一有毛病的话,增加 xml_error_string() 函数把 XML 毛病转换为文本申明

·挪用 xml_parser_free() 函数来开释分配给 xml_parser_create() 函数的内存

以上就是php剖析器是什么的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
php解析器是什么【php题目】

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签: