加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php截取字符串并保留完整xml标签的函数代码

发布时间:2020-05-28 18:25:21 所属栏目:PHP 来源:互联网
导读:截取字符串并保留完整xml标签的php代码,有需要的朋友可以参考下

<div class="codetitle"><a style="CURSOR: pointer" data="84994" class="copybut" id="copybut84994" onclick="doCopy('code84994')"> 代码如下:<div class="codebody" id="code84994">
<?php
/*
author: goosman
blog: http://blog.csdn.net/lgg201
mail: lgg860911@yahoo.com.cn
/ $str = '01234567890120123456789';
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,$l);
}
echo $str . chr(10);
echo substr_remain_tag($str,20) . chr(10);

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读