PHP cdata 处理(详细介绍)
2013-07-05 12:54
323 查看
// States:
//
// 'out'
// '<'
// '<!'
// '<!['
// '<![C'
// '<![CD'
// '<![CDAT'
// '<![CDATA'
// '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 ( '<' == $v ) {
$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 '<![C':
if ( 'D' == $v ) {
$state = $state . $v;
} else {
$new_xml .= $state . $v;
$state = 'out';
}
break;
case '<![CD':
if ( 'A' == $v ) {
$state = $state . $v;
} else {
$new_xml .= $state . $v;
$state = 'out';
}
break;
case '<![CDA':
if ( 'T' == $v ) {
$state = $state . $v;
} else {
$new_xml .= $state . $v;
$state = 'out';
}
break;
case '<![CDAT':
if ( 'A' == $v ) {
$state = $state . $v;
} else {
$new_xml .= $state . $v;
$state = 'out';
}
break;
case '<![CDATA':
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;
相关文章推荐
- PHP cdata 处理(详细介绍)
- 详细介绍PHP中文处理函数大集结
- php中get_headers函数的作用及用法的详细介绍
- 解析用PHP实现var_export的详细介绍
- Android Init进程对信号的处理流程详细介绍
- PHP处理excel cvs表格的方法实例介绍
- 基于php上传图片重命名的6种解决方法的详细介绍
- php安全模式详细介绍
- php5编程中的异常处理详细方法介绍
- 详细介绍PHP应用提速
- (Linux文本处理神指令)sed介绍.附详细例子(上)
- php面向对象_get(),_set()的用法详细介绍[乐杨俊]
- php中引用符号(&)的使用详细介绍
- PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
- PHP session 存储方式的详细介绍
- PHP缓存控制器的详细介绍
- config.inc.php详细参数介绍
- 关于PHP数组转字符串详细介绍
- PHP OPCode缓存:APC详细介绍
- PHP采集类snoopy详细介绍(snoopy使用教程)