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

复制代码 代码如下:

<?php 
    /**
     * author: goosman
     * blog: http://blog.csdn.net/lgg201
     * mail: lgg860911@yahoo.com.cn
     */ 

    $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);

时间: 2024-09-20 01:14:23

php截取字符串并保留完整xml标签的函数代码_php技巧的相关文章

php中将数组转成字符串并保存到数据库中的函数代码_php技巧

复制代码 代码如下: /** * 将字符串转换为数组 * * @param    string  $data   字符串 * @return   array   返回数组格式,如果,data为空,则返回空数组 */   function string2array($data) {       if($data == '') return array();       @eval("\$array = $data;");       return $array;   }    /** *

PHP 创建标签云函数代码_php技巧

复制代码 代码如下: function getCloud( $data = array(), $minFontSize = 12, $maxFontSize = 30 ) { $minimumCount = min( array_values( $data ) ); $maximumCount = max( array_values( $data ) ); $spread = $maximumCount - $minimumCount; $cloudHTML = ''; $cloudTags =

php操作xml入门之xml标签的属性分析_php技巧

本文实例讲述了php操作xml入门之xml标签的属性.分享给大家供大家参考.具体分析如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <class>  <student id="No001" haha="美女">   <name>小乔</name>   &

php中计算中文字符串长度、截取中文字符串的函数代码_php技巧

在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启.当然,如果是用的自己的服务器,则只要在php.ini中开启即可.如果是用的虚拟主机,而服务器又没有开启这方面的函数的话,那就需要我们自己写出点适合咱国情的函数来了. 以下几个函数用起来颇为顺手的.不过要知道,得在utf-8环境下使用. 复制代码 代码如下: header('Content-type:text/html;cha

php中使用DOM类读取XML文件的实现代码_php技巧

主要功能:php中使用DOM类读取XML文件 设计知识点: 1.XML节点循环读取 2.用iconv()函数实现编码转换,防止中文乱码 holiday.xml文件如下 复制代码 代码如下: <?xml version="1.0" encoding="UTF-8"?> <daysOff-overTime> <year> <yearName>2012</yearName> <holiday> <

php 截取字符串并以零补齐str_pad() 函数_php技巧

定义和用法 str_pad() 函数把字符串填充为指定的长度. 语法 str_pad(string,length,pad_string,pad_type)参数 描述 string 必需.规定要填充的字符串. length 必需.规定新字符串的长度.如果该值小于原始字符串的长度,则不进行任何操作. pad_string 可选.规定供填充使用的字符串.默认是空白. pad_type 可选.规定填充字符串的那边. 可能的值: STR_PAD_BOTH - 填充到字符串的两头.如果不是偶数,则右侧获得额

PHP UTF8中文字符截断函数代码_php技巧

php中英文混合字符截断不乱码函数(utf8) 复制代码 代码如下: //utf8格式下的中文字符截断//$sourcestr 是要处理的字符串//$cutlength 为截取的长度(即字数)//$addstr 超过长度时在尾处加上的字符function cut_str($sourcestr, $cutlength, $addstr='...'){ $returnstr=''; $i=0; $n=0; $str_length=strlen($sourcestr);//字符串的字节数 while

php 批量替换html标签的实例代码_php技巧

1.把html元素全部去掉,或者保留某几个html标签 复制代码 代码如下: <?php$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';echo strip_tags($text);echo "/n"; // Allow <p> and <a>echo str

PHP删除HTMl标签的实现代码_php技巧

复制代码 代码如下: /** * 取出html标签 *  * @access public * @param string str * @return string *  */function deletehtml($str) {    $str = trim($str); //清除字符串两边的空格    $str = strip_tags($str,"<p>"); //利用php自带的函数清除html格式.保留P标签    $str = preg_replace(&quo