php cdata,PHPcdata处理(详细介绍)_PHP教程

PHPcdata处理(详细介绍)_PHP教程

当时在网上找了一个CDATA的转换器, 修改之后, 将CDATA标签给过滤掉。如下

代码如下:

// States:

//

// 'out'

// ' // ' // ' // ' // ' // ' // ' // 'in'

// ']'

// ']]'

//

// (Yes, the states a represented by strings.)

//

$state = 'out';

$a = str_split($xml);

$new_xml = '';

foreach ($a AS $k => $v) {

// Deal with "state".

switch ( $state ) {

case 'out':

if ( ' $state = $v;

} else {

$new_xml .= $v;

}

break;

case ' if ( '!' == $v ) {

$state = $state . $v;

} else {

$new_xml .= $state . $v;

$state = 'out';

}

break;

case ' if ( '[' == $v ) {

$state = $state . $v;

} else {

$new_xml .= $state . $v;

$state = 'out';

}

break;

case ' if ( 'C' == $v ) {

$state = $state . $v;

} else {

$new_xml .= $state . $v;

$state = 'out';

}

break;

case ' if ( 'D' == $v ) {

$state = $state . $v;

} else {

$new_xml .= $state . $v;

$state = 'out';

}

break;

case ' if ( 'A' == $v ) {

$state = $state . $v;

} else {

$new_xml .= $state . $v;

$state = 'out';

}

break;

case ' if ( 'T' == $v ) {

$state = $state . $v;

} else {

$new_xml .= $state . $v;

$state = 'out';

}

break;

case ' if ( 'A' == $v ) {

$state = $state . $v;

} else {

$new_xml .= $state . $v;

$state = 'out';

}

break;

case ' if ( '[' == $v ) {

$cdata = '';

$state = 'in';

} else {

$new_xml .= $state . $v;

$state = 'out';

}

break;

case 'in':

if ( ']' == $v ) {

$state = $v;

} else {

$cdata .= $v;

}

break;

case ']':

if ( ']' == $v ) {

$state = $state . $v;

} else {

$cdata .= $state . $v;

$state = 'in';

}

break;

case ']]':

if ( '>' == $v ) {

$new_xml .= htmlentities($cdata);

# $new_xml.= $cdata;

// $new_xml .= str_replace('>','>',

// str_replace('>',' // str_replace('"','"',

// str_replace('&','&',

// $cdata))));

$state = 'out';

} else {

$cdata .= $state . $v;

$state = 'in';

}

break;

} // switch

}

//

// Return.

//

return $new_xml;

最近发现,总是有alert发出来, 说是simplexml解析出错。

发现是原来有xml的数据是. 出现了连续的3个], 造成上面的解析函数不能处理。

而且这个问题很难修正, 你不知道下次会不会有4, 5个]出现。

所以决定还是将这段解析 的代码换成DOM XML,本身 DOM的处理还是比较简单的,

包含DOMElement, DOMDocument, DOMNodeList, DOMNode几个 component.

对于 DOMNode有nodeValue, nodeType, nodeName的成员函数。

首先先用loadXML将string转化为DOMDocument对像, 再用getElementsByTagName转化为DOMNodeList对像, 再使用->item(0)转化为DOMNOde, 然后就可以使用上面的三种方法了。

对于 test这种xml标签, 要使用 attribute函数。

http://www.bkjia.com/PHPjc/328068.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/328068.htmlTechArticle当时在网上找了一个CDATA的转换器, 修改之后, 将CDATA标签给过滤掉。如下 代码如下:// States: // // 'out' // '' // '!' // '![' // '![C' /...

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP 与go 通讯,Golang和php通信

不同语言之间的通信方式有很多种,这里我介绍一种最简单通信方式,json-rpc。Golang自带json-rpc包,使用起来十分简单,示例如下,提供一个简单echo server。package mainimport ("fmt""net""net…

php 接口日志,PHP 开发 APP 接口--错误日志接口

APP 上线以后可能遇到的问题:① APP 强退② 数据加载失败③ APP 潜在问题错误日志需要记录的内容数据表 error_log 字段:idapp_id:app 类别 iddid:客户端设备号version_id:版本号version_mini:小版本号erro…

php 空模块,tp5.1配置空模块,空方法

config/app.php//默认的空模块名empty_module>index,controller/Error.php<?php namespace app\index\controller;use Env;use think\Controller;class Error extends Controller {//Db::connect(db_ck)//全局MISS路由 在route.php里面设置找不到控制器默认处理//Route:…

centos7php自启动,centos7系统下nginx安装并配置开机自启动操作

这篇文章主要介绍了centos7系统下nginx安装并配置开机自启动操作方法,非常不错&#xff0c;具有参考借鉴价值&#xff0c;需要的朋友可以参考下这篇文章主要介绍了centos7系统下nginx安装并配置开机自启动操作方法,非常不错&#xff0c;具有参考借鉴价值&#xff0c;需要的朋友…

时钟php,php+js液晶时钟

php代码$size_small5;//液晶宽度$size_big25;//液晶长度$distance10;//间距$color_back"#DDDDDD";$color_dark"#CCCCCC";$color_light"#000000";$number0;?>Timer|www.ibtf.net|www.bitefu.netfunction swapcolor(obj,onoff)//改变颜色{if (…

r和matlab学哪个,初学者求教‘r*’是什么意思啊

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼PLOT(X,Y,S) where S is a character string made from one elementfrom any or all the following 3 columns:b blue . point - solidg green o circle : dottedr red x x-mark -. dashdotc cyan plus -- dashedm magenta * star…

php swoole 心跳,聊聊swoole的心跳

来自&#xff1a;桶哥的一篇关于swoole的心跳的文章&#xff0c;作为Swoole顾问(顾得上就问,是为「顾问」)得推一下这篇文章&#xff0c;最后只留下一配置&#xff0c;其实我也不是太明白原理&#xff0c;我在想如果是局域网里还需要心跳&#xff1f;—————————————…

mysql 查询 投影,MySql-连接查询

连接查询Chloe 友好支持多表连接查询&#xff0c;一切都可以用 lambda 表达式操作&#xff0c;返回类型可以是自定义类型&#xff0c;也可以是匿名类型。强类型开发&#xff0c;编译可见错误&#xff0c;容错率高。1.建立连接&#xff1a;var user_city_province context.Quer…

php 递归栏目名叠加,thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法,thinkphp递归...

thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法&#xff0c;thinkphp递归本文实例讲述了thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;这里使用thinkphp递归循环栏目按照树形结构无限极输出&#…

php cannot call constructor,安装ECshop普遍问题的解决方法

安装时的问题&#xff1a;1.Strict Standards: Non-static method cls_image::gd_version() should not be called statically in /usr/local/httpd2/htdocs/upload/install/includes/lib_installer.php on line 31解决&#xff1a;找到install/includes/lib_installer.php中的…

wind试用版 matlab,免费产品试用 - MATLAB Simulink

请选择其一AlabamaAlaska美属萨摩亚APO/FPO AAAPO/FPO AEAPO/FPO APArizonaArkansasCaliforniaCaroline IslandsColoradoConnecticutDelawareDistrict of ColumbiaFlorida格鲁吉亚关岛HawaiiIdahoIllinoisIndianaIowaKansasKentuckyLouisianaMaineMariana Islands马绍尔群岛Mar…

php yii2 sns,GitHub - yggphpcoder/iisns: 基于 yii2 的 sns 社区系统,一站式解决社区建站...

iisns - 地球村入口iiSNS 是基于 yii2 的 SNS 社区系统&#xff0c;一站式解决社区建站。可以写文章&#xff0c;做记录&#xff0c;上传图片&#xff0c;论坛聊天等。还可以用来做内容管理系统(CMS)。iiSNS 是一个免费的开源项目&#xff0c;在 MIT 许可证下授权发布。特点与功…

php mvc 商城,基于MVC框架的小型网上商城设计

2&#xff0e;本人对课题任务书提出的任务要求及实现预期目标的可行性分析基于MVC框架的小型网上商城实现的功能&#xff1a;商品的浏览、查询、购买&#xff0c;会员注册以及会员订单的查询等&#xff0c;方便商场活动&#xff0c;该系统基本实现了网上商城的应有功能。该系统…

php 做更新进度条,PHP exec()后更新Bootstrap进度条

我使用PHP来运行一个python脚本&#xff0c;并且在脚本执行后需要更新一个进度条。进度条更新后&#xff0c;将执行另一个脚本&#xff0c;依此类推。这里是我的代码如此的票价。我试图用JavaScript来实现。它没有解决Button Textif (isset($_POST[turn])){exec("sudo pyt…

zblog php和asp功能,ZBlog是否适合PHP或ASP?我们该如何选择?

我最近玩了zblog一段时间&#xff0c;对于大多数第一次联系zblog的博客&#xff0c;他们会问zblog是否适合PHP或ASP&#xff1f;我们该如何选择&#xff1f;事实上&#xff0c;我真的不明白这个问题。我个人更喜欢PHP。今天我将整理出来并对PHP版本和ASP版本进行比较&#xff0…

php js记住密码功能,jquery.cookie.js实现用户登录保存密码功能的方法_jquery

本文实例讲述了jquery.cookie.js实现用户登录保存密码功能的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;需要导入的js有jquery.js和jquery.cookie.js在页面加载时首先尝试获取cookie的值&#xff0c;如果cookie有值&#xff0c;则将获取到的值填入输入框中&am…

oracle dbf 超大,oracle 数据库users01.dbf文件过大 转移方法

如果出现 linux 拒绝错误&#xff0c;可以把目录权限 该为777由于在安装的时候将Oracle安装到了C盘&#xff0c;表空间也创建到了C盘(当时没有在意)&#xff0c;等项目进行到了中期&#xff0c;发现C盘的空间不够用了。此时&#xff0c;一个较好的解决办法就是将表空间的文件转…

oracle中exists连接两个表,IN、EXISTS、多表连接,哪个速度更快

本帖最后由 ghsau 于 2011-10-11 23:39 编辑请看下面三个执行计划(Oracle10g)1. 用INSQL> select ename from emp e where e.deptno in (select d.deptno from dept d where d.dnameSALES);PLAN_TABLE_OUTPUT------------------------------------------------------------…

php决策管理,报表管理与数据分析:为系统未来发展规划提供决策依据,有效避免IT管理与投资的盲目??...

据了解&#xff0c;很多中大型企事业单位的IT基础结构具有复杂、分散等特征&#xff0c;并且信息化程度越高&#xff0c;数据类型越繁杂&#xff0c;数据量也越庞大。许多单位不得不付出极大的人力、物力对网络进行管理。而一个单位的信息化的程度和IT部门的服务水平&#xff0…

oracle迁移undo表空间,oracle切换undo表空间

Oracle里的回滚表空间在数据库使用一段时间后&#xff0c;undo表空间的dbf文件往往会增长到比较大&#xff0c;这个时候我们需要切换undo表空间1.新建undo表空间SQL> create undo tablespace undotbs2 datafile /data/undotbs02.dbf size 10M autoextend on next 10M ;2.由于…