当前位置: 代码迷 >> 综合 >> Zend_Framework 版本读取、Dom操作、Json与文本
  详细解决方案

Zend_Framework 版本读取、Dom操作、Json与文本

热度:78   发布时间:2023-09-30 05:34:56.0

Zend_Version

常量Zend_Version::VERSION的值为Zend Framework的当前版本号,例如0.9.0beta。
静态方法Zend_Version::compareVersion($version)基于PHP函数version_compare()。如果指定的$version比当前ZF的版本旧,则该方法返回-1,如果相等则返回0,如果比当前版本更新返回+1。

// returns -1, 0 or 1
$cmp = Zend_Version::compareVersion('1.0.0');

Zend_Dom

它提供统一的接口利用 XPath 和 CSS 选择器来查询 DOM 文档。
要使用 Zend_Dom_Query,你需要初始化一个 Zend_Dom_Query 对象,并可选地传递一个文档到查询(一字符串)。 一旦你有一个文档,可以使用 query() 或 queryXpath() 方法; 每个方法将返回带有任何匹配节点的 Zend_Dom_Query_Result 对象。

选择器

支持Css标签选择器,ID选择器,类选择器,属性选择器,直系子类的选择以及组合器的组合使用。
属性选择器有三个不同的匹配类型:

① 精准匹配: div[bar="baz"] 匹配只有一个 “bar” 属性的 div 元素。

② 单词匹配: div[bar~="baz"] 匹配带有 “bar” 属性的 div 元素,如 <div bar="foo baz">

③ substring match:div[bar*="baz"]匹配属性中带有 “bar” 字符的 div 元素,如<div bar="foo bazbat">

Zend_Dom_Query 方法

setDocumentXml($document): 指定一个查询使用的 XML 字符串。

setDocumentXhtml($document): 指定一个查询使用的 XHTML 字符串。

setDocumentHtml($document): 指定一个查询使用的 HTML 字符串。

setDocument($document): 指定一个查询使用的字符串; Zend_Dom_Query 将尝试自动检查文档类型。

getDocument(): 获取提供给对象的原始文档字符串。

getDocumentType(): 获取提供给对象的文档的类型;是 DOC_XML、 DOC_XHTML 或 DOC_HTML 类常量其中之一。

query($query): 使用 CSS 选择器符号查询文档。

queryXpath($xPathQuery): 使用 XPath 符号查询文档。

Zend_Dom_Query_Result

Zend_Dom_Query_Result 实现 Iterator 和 Countable, 可用于 foreach 循环和 count() 函数,并在内部存储结果为 DOMNodes/DOMElements。

用途:①确定节点的信息②可以 把它们和/或它们的内容拿出来检查和处理。

方法:
getCssQuery(): 返回用于处理结果(如果有的话)的 CSS 选择器查询。

getXpathQuery(): 返回用于处理结果的 XPath 查询。 在内部,Zend_Dom_Query 转换 CSS 选择器查选为 XPath,所以这个值将永远被组装。

getDocument(): 获取选择使用的文档。

$dom = new Zend_Dom_Query($html);
$results = $dom->query('.foo .bar a');$count = count($results); // get number of matches: 4
foreach ($results as $result) {// $result is a DOMElement
}

Zend_Json

对象转JSON

方法:Zend_Json::encode() 和 Zend_Json::decode().

// 获得一个value:
$phpNative = Zend_Json::decode($encodedValue);// 编码并返回给客户端:
$json = Zend_Json::encode($phpNative);

Zend_Json::encode() 和 Zend_Json_Encoder::encode() 允许一个可选的第二个参数来检查递归。

当把PHP对象编码为JSON时, 它的所有的公有属性将被编码为JSON格式;而当解码时,默认将JSON对象解码成关联数组。但是如果你希望它返回一个对象, 可以这样指定:

// 解码 JSON 对象作为 PHP 对象
$phpNative = Zend_Json::decode($encodedValue, Zend_Json::TYPE_OBJECT);

这样任何解码后的对象将被作为一个StdClass的对象来返回,对象带有根据JSON对象的key/value对生成的一系列属性。

XML转JSON

最高支持 25 级XML层次

Zend_Json::fromXml($xmlStringContents, $flag)
$xmlStringContents:XML 字符串; $flag:是否忽略 XML 属性,默认忽略 XML 属性。

        $jsonContents = Zend_Json::fromXml($xmlStringContents, true);?>

举例:

//XML<?xml version="1.0" encoding="UTF-8"?>
<books><book id="1"><title>Code Generation in Action</title><author><first>Jack</first><last>Herrington</last></author><publisher>Manning</publisher></book><book id="2"><title>PHP Hacks</title><author><first>Jack</first><last>Herrington</last></author><publisher>O'Reilly</publisher></book><book id="3"><title>Podcasting Hacks</title><author><first>Jack</first><last>Herrington</last></author><publisher>O'Reilly</publisher></book>
</books> ?>//JSON{"books" : {"book" : [ {"@attributes" : {"id" : "1"},"title" : "Code Generation in Action","author" : {"first" : "Jack", "last" : "Herrington"},"publisher" : "Manning"}, {"@attributes" : {"id" : "2"},"title" : "PHP Hacks", "author" : {"first" : "Jack", "last" : "Herrington"},"publisher" : "O'Reilly"}, {"@attributes" : {"id" : "3"},"title" : "Podcasting Hacks", "author" : {"first" : "Jack", "last" : "Herrington"},"publisher" : "O'Reilly"}]}
}  ?>

Zend_Text

FIGlet是什么?

「FIGlet」是基于ASCII字符组成的字符画。它的名字由来,其实有几个固定的名称,几种比较主要的称呼分别是:「ASCII TEXT」、「ASCII TEXT Banner」、「ASCII Art」、「ASCII Decorator」和「FIGlet」。然而「FIGlet」这个词应该是最标准的用法。「FIGlet」原作者是Glenn Chappell、Ian Chai,源于 Frank、Ian 和 Glen当初在写邮件签名的时候加上去的一些字体艺术。

Zend_Text_Figlet

Zend_Text_Figlet是一个使开发人员能够创建FIGlet文本的组件。 FIGlet文本是一个字符串,表示为ASCII art。 FIGlets使用特殊的字体格式,称为FLT(FigLet Font)。默认情况下,Zend_Text_Figlet附带一个标准字体,但您可以在http://www.figlet.org下载其他字体。

$figlet = new Zend_Text_Figlet();
echo $figlet->render('Zend');

Zend_Framework 版本读取、Dom操作、Json与文本

您可以为FIGlet定义多个参数。在实例化Zend_Text_Figlet时,您可以提供Zend_Config的数组或实例。

font - 定义应该用于渲染的字体。如果未定义,将使用内置字体。

outputWidth - 定义输出字符串的最大宽度。这用于自动换行以及对齐。如果值太小可能导致出错。默认值为80。

handleParagraphs - 一个布尔值,表示如何处理空白行。设置为true时,将忽略单个空白行,而是将其视为单个空格。只会处理多个空白行。默认值为false。

justification- 可以是JUSTIFICATION_LEFTJUSTIFICATION_CENTERJUSTIFICATION_RIGHT,默认对齐由rightToLeft值定义。

rightToLeft - 定义文本的写入方向。可以是Zend_Text_Figlet :: DIRECTION_LEFT_TO_RIGHTZend_Text_Figlet :: DIRECTION_RIGHT_TO_LEFT。默认情况下,使用字体文件的设置。未定义对齐时,从右到左书写的文本会自动右对齐。

smushMode - 一个整数值,用于定义单个字符如何一起smush。可以是Zend_Text_Figlet :: SM_ *中多个值的总和。有以下smush模式:SM_EQUALSM_LOWLINESM_HIERARCHYSM_PAIRSM_BIGXSM_HARDBLANKSM_KERNSM_SMUSH。值0不会禁用整个smushing,但会强制应用SM_KERN,而值为-1则禁用它。默认情况下,使用字体文件的设置。 smush模式选项通常仅由字体设计者使用新字体测试各种布局模式。

[注意]

① 压缩字体
Zend_Text_Figlet支持gzip压缩字体。这意味着您可以获取.flf文件并对其进行gzip。要允许Zend_Text_Figlet识别这一点,gzipped字体必须具有扩展名.gz。此外,为了能够使用gzip压缩字体,您必须启用PHP的GZIP扩展。

② 编码
Zend_Text_Figlet期望您的字符串默认为UTF-8编码。如果不是这种情况,您可以将字符编码作为第二个参数提供给render()方法。

  相关解决方案