-
Notifications
You must be signed in to change notification settings - Fork 18
components hParse
tolizhan edited this page May 22, 2020
·
2 revisions
- 使php可以用jQuery方式来操作html字符串 特殊说明如下:
- 未实现与样式相关的伪类及方法,如:hide和:show的伪类和方法
- 样式操作时未实现继承关系,如:css('display')读取隐藏属性; :contains伪类不判断标签块类型,均按内联类型处理.
- jQuery中方法名在php中为关键词的,后面追加's',如:clones代替clone; emptys代替empty
- 未实现jQuery的each等遍历方法,但扩展了一些方法使其返会数组,如:eq(),text()
- 方法m代替jQuery的方法$
-
-
$arg传入需要解析的字符串返回一个包含解析节点的父节点对象
<?php $hParseObj = new of_base_com_hParse('<div style="background-color:blue;"></div>');
-
-
$contextstring, object对象=克隆一个新的对象(使用clone关键词),第一位为'<'的字符串=解析html,其他字符串=选择器$rootObjstring, object, booleancontext为文本时有效,查询的根目录,字符串=与context描述一致,true=强制文本解析,false=强制解析为不编码的文本节点器,null=从当前根本目录开始解析
<?php $hParseObj->m('div'); //查询div标签 $hParseObj->m('[@^attr=value@i]'); //可以通过m或find等方法以"@"开通正则匹配"属性名=属性值" $hParseObj->m('<div>'); //解析一个字符串 $hParseObj->m('</>创建纯文本借点'); //通过 '</>'xxx 这种方式可以创建纯文本节点
-
$attrstring, array字符串=读取或设置属性名,数组=同时修改多个属性{属性名:属性值}
实现的特殊属性:
tagName : 读取标签名(只读)
outerHTML : 读取或设置自身节点的html内容
innerHTML : 读取或设置其子节点的html内容(对允许有子节点的标签有效)
textContent : 读取或设置其子节点text内容(对允许有子节点的标签有效)
>tagState::end : 是否结束标签正确关闭, 1=正确, 0=缺失
>tagLine::start : 节点在源文件的行数
>attrLine::属性名 : 属性在源文件的行数
>attrQuote::属性名 : 属性在源文件的引号(双引:'"',单引:"'",空字符:"")
空字符串 : 为了满足php中的某些特殊需求,设置了这个特殊属性,传入这里的值都不会经过编码输出 (文本节点修改文本内容,常规节点添加属性)$valuestringattr为字符串时使用,对应属性值
<?php $hParseObj->m('div')->attr('kk', '<?php'); //kk的值为<?php $hParseObj->m('div')->attr('', 'kk="<?php"'); //kk的值为<?php
-
$selectortrue(默认)=获取直接子元素,false=获取子孙全部元素,null=获取子孙非文本类元素,字符串=获取子孙为指定标签名的元素
-
$typestringobj(默认)=返回根文档对象,str=返回字符串$modebooltype为str时有效, true=补全未闭合标签, false=按原解析方式(包括未匹配的结束标签)
<?php $hParseObj->m('div')->doc('obj'); //返回$hParseObj对象 $hParseObj->m('div')->doc('str'); //返回$hParseObj转换的html字符
-
$indexint数字=返回包含指定索引节点的对象,null(默认)=返回包含每个节点对象的数组
<?php $hParseObj->m('div')->eq(); //返回包含每个div对象的数组 $hParseObj->m('div')->eq(1); //返回第二个元素的对象
-
$nodeListbooleantrue=返回节点列表, false=返回所有属性{'callerObj' : 上一次调用的对象, 'docNodeKey' : 文档个根节点, 'nodeList' : 包含的节点列表}
<?php $hParseObj->m('div')->get(); //返回包含节点的数组[节点键,节点键...] 配合节点键操作方法提升性能 $hParseObj->m('div')->get(false); //返回对象属性
-
$textfalse(默认)=获取第一个元素中innerHTML内容, true=获取第一个元素中outerHTML内容, 字符串=设置每一个匹配元素的innerHTML内容$modetext为bool时有效, true=补全未闭合标签, false=按原解析方式(包括为匹配的结束标签)
-
$strbooleantrue=返回包含每个字符串节点对象的数组,false=返回包含字符串内容的数组,null(默认)=从匹配的元素中获取文本内容,字符串=设置每一个匹配元素的文本内容
-
$className, $context与m的方法参数相同
-
无参数
-
$selector选择符,HParse对象
-
$start一个整数,指示0的位置上的元素开始被选中.如果为负,则表示从集合的末尾的偏移量$end一个整数,指示0的位置上被选中的元素停止.如果为负,则表示从集合的末尾的偏移量.null=持续到集合的末尾
-
$classNamestring为每个匹配元素所要增加的一个或多个样式名,多个样式用空格分离
-
$classNamestring检查的样式名,多个样式用空格分割
-
$classNamestring移除的样式名,多个样式用空格分割
-
$attrstring指定一个属性名
-
$namestring, array字符串=一个css属性名,数组=同时修改多个属性{属性名:属性值}$valuestring一个CSS属性名的值, ""=删除属性
-
$valuestringnull(默认)=获取匹配的元素集合中第一个元素的当前值,字符串=设置匹配的元素集合中每个元素的值
-
$content, $rootObj与m的方法参数相同
-
$content, $rootObj与m的方法参数相同
-
$content, $rootObj与m的方法参数相同
-
$content, $rootObj与m的方法参数相同
-
$content, $rootObj与m的方法参数相同
-
$content, $rootObj与m的方法参数相同
-
$content, $rootObj与m的方法参数相同
-
$content, $rootObj与m的方法参数相同
-
$content, $rootObj与m的方法参数相同
-
$content, $rootObj与m的方法参数相同
-
$selector一个用于匹配元素的选择器字符串
-
$selector, $rootObj与m的方法参数相同
-
无参数
-
无参数
-
无参数
-
$selector一个选择表达死用来过滤匹配的将被移除的元素
-
无参数
-
无参数
-
$selector选择符,HParse对象
-
$selector选择符,HParse对象
-
$selector一个选择器或者对象
-
$selectornull(默认)=当前集合第一个节点在它同辈节点的位置
选择符 =当前集合第一节点在选择器中的位置
对象 =对象中的第一节点在当前集合中的位置 -
无参数
-
$selector一个选择器
-
$selector一个选择器
-
$selector一个选择器
-
$selector一个选择器
-
$selector一个选择器
-
$selector一个选择器
-
$selector一个选择器
-
$selector一个选择器
-
$selector一个选择器
-
$selector一个选择器
-
$selector一个选择器
-
无参数
-
$wrap, $rootObj与m的方法参数相同
-
$wrap, $rootObj与m的方法参数相同
-
$wrap, $rootObj与m的方法参数相同
nodeKeys
指的选择器的根节点键,数组
selector
筛选字符串,以jQuery为参照
isChild
true(默认)=从子节点开始,false=从自身节点开始
nodeKeys
指定遍历的节点键
attr
属性名称,null=读取所有真实属性
value
字符串=设置属性,null(默认)=读取属性,false=删除属性
nodeKey
指定查询的节点键,数字
type
查询类型,sibling=不包含自己全部兄弟节点,next=之后的兄弟节点,prev=之前的兄弟节点,parent=父节点,child=子节点
needle
对结果集进行筛选,false(默认)=不筛选返回数组,数字=取出指定位置的节点键(支持负数)
textNode
是否包含文本或碎片节点,false(默认)=不包含,true=包含
autoKey
自增键,needle为false时有效,true(默认)=连续的键值,false=以节点键为键
nodeKeys
指定移除或插入的节点键,数字
pNodeKey
null=移除节点,数字=插入到的目标节点键(碎片插入仅文本子节点时,除碎片子节点后挑一级文本节点插入)
insType
插入时有效,true=插入头部,false(默认)=插入尾部,数字=插入指定节点键前,null=替换插入(移除目标子节点后插入)
//创建测试节点: <div><span></span></div> $hParseObj = new of_base_com_hParse('<div><span></span></div>'); //获取节点键(节点数组) $nodeKeys = $hParseObj->get(); //搜索span节点 $nodeKeys = of_base_com_hParse::selectors($nodeKeys, 'span'); //修改节点属性(单节点操作) of_base_com_hParse::nodeAttr($nodeKeys[0], 'innerHTML', 'test'); //输出整个文档: <div><span>test</span></div> echo $hParseObj->doc('str');
手册地址 http://phpof.net/
- 入门指引
-
疑难解答
- 部署时会遇到的那些常见问题
简单却容易忽视 - 框架内置有哪些管理界面
生产模式进入界面需用 __OF_DEBUG__ - 如何定制不同的架构模式
通过配置入口文件中调度方法的参数即可 - 如何面向命名空间开发
of_xx 类可以按照命名空间方式调用 - 如何设置不同的部署模式
通过_of.debug设置 开发,测试,生产 模式 - 为什么控制层类文件要返回true
这是防止非法访问的方法之一 - 为什么传到视图层的变量会被编码
这是因为 XSS 安全防范的原因 - 为什么框架没有SQL构造器
因常规方案牺牲了性能又未很好解决问题 - 如何快速开发用户及权限管理功能
单点登录(SSO)模块因此而存在 - 怎么在系统的基础上扩展底层功能
三点: 扩展开发, 预先加载, 底层钩子 - 怎么使用 Composer 依赖管理工具
框架已集成, 默认关闭状态
- 部署时会遇到的那些常见问题
- 组件使用
- 集成插件
- 扩展开发
- 开发手册