php截取字符串并保留完整xml标签的函数代码
2015-01-24信息快讯网
截取字符串并保留完整xml标签的php代码,有需要的朋友可以参考下
<?php
/**
* author: goosman
* blog: http://blog.csdn.net/lgg201
* mail: [email protected]
*/
$str = '0123456789<a>012</a>0123456789';
function substr_remain_tag($s, $o, $l) {
$is_match = preg_match_all(<<<heredoc
#该正则表达式解析xml标签, 标签属性内部支持转义符"\", 支持对"\"自身和对应引号的转义
<(\w+) #标签开始
(?: #属性列表
\s+ #前置空格
\w+ #属性名
\s* #属性名后的空白(为了兼容)
= #属性名值之间的等号
\s* #属性值前的空白(为了兼容)
(?: #属性值(引号处理)
" #双引号的情况
(?:
\\\\\\\\ #吃掉连续两个转义符(表示转义符自身)
\\\\" #吃掉转义符接着一个引号(表示转义的引号)
[^"\\\\]* #其他字符
)*
"
' #单引号情况
(?:
\\\\\\\\ #吃掉连续两个转义符(表示转义符自身)
\\\\' #吃掉转义符接着一个引号(表示转义的引号)
[^'\\\\]* #其他字符
)*
'
)
)*
>
.*? #标签内容
</(?1)> #结束标签
;x
heredoc
, $s, $matches, PREG_OFFSET_CAPTURE, $o);
if ( $is_match ) {
foreach ( $matches[0] as $match ) {
$o0 = $match[1];
#标签左边界越过截取目标右边界, 退出
if ( $o0 >= $o + $l ) break;
$l0 = strlen($match[0]);
#标签右边界在截取目标右边界内, 继续
if ( $o0 + $l0 < $o + $l ) continue;
#以下为标签跨边界处理
$l = $o0 + $l0 - $o;
break;
}
}
return substr($s, $o, $l);
}
echo $str . chr(10);
echo substr_remain_tag($str, 0, 20) . chr(10);
php 如何获取数组第一个值
php number_format() 函数通过千位分组来格式化数字的实现代码
php实现统计邮件大小的方法
php addslashes 利用递归实现使用反斜线引用字符串
如何使用PHP批量去除文件UTF8 BOM信息
PHP自动识别字符集并完成转码详解
浅析51个PHP处理字符串的函数
通过table标签,PHP输出EXCEL的实现方法
table标签的结构与合并单元格的实现方法
php的数组与字符串的转换函数整理汇总
php字符串截取的简单方法
PHP删除HTMl标签的三种解决方法
PHP删除HTMl标签的实现代码
解析thinkphp中的导入文件标签
解析smarty 截取字符串函数 truncate的用法介绍
解析使用substr截取UTF-8中文字符串出现乱码的问题
php中使用preg_replace函数匹配图片并加上链接的方法
php中存储用户ID和密码到mysql数据库的方法
php中使用__autoload()自动加载未定义类的实现代码
php中使用preg_match_all匹配文章中的图片
php中使用addslashes函数报错问题的解决方法
php中设置index.php文件为只读的方法
php中将字符串转为HTML的实体引用的一个类
php中删除字符串中最先出现某个字符的实现代码
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
PHP中计算字符串相似度的函数代码
PHP编码转换函数 自动转换字符集支持数组转换
thinkPHP的Html模板标签使用方法
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
php标签云的实现代码
php使HTML标签自动补全闭合函数代码
比较discuz和ecshop的截取字符串函数php版
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
php截取后台登陆密码的代码
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
PHPWind与Discuz截取字符函数substrs与cutstr性能比较