php截取字符串并保留完整xml標(biāo)簽的函數(shù)代碼
更新時(shí)間:2013年02月06日 17:41:07 作者:
截取字符串并保留完整xml標(biāo)簽的php代碼,有需要的朋友可以參考下
復(fù)制代碼 代碼如下:
<?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
#該正則表達(dá)式解析xml標(biāo)簽, 標(biāo)簽屬性內(nèi)部支持轉(zhuǎn)義符"\", 支持對(duì)"\"自身和對(duì)應(yīng)引號(hào)的轉(zhuǎn)義
<(\w+) #標(biāo)簽開始
(?: #屬性列表
\s+ #前置空格
\w+ #屬性名
\s* #屬性名后的空白(為了兼容)
= #屬性名值之間的等號(hào)
\s* #屬性值前的空白(為了兼容)
(?: #屬性值(引號(hào)處理)
" #雙引號(hào)的情況
(?:
\\\\\\\\ #吃掉連續(xù)兩個(gè)轉(zhuǎn)義符(表示轉(zhuǎn)義符自身)
\\\\" #吃掉轉(zhuǎn)義符接著一個(gè)引號(hào)(表示轉(zhuǎn)義的引號(hào))
[^"\\\\]* #其他字符
)*
"
' #單引號(hào)情況
(?:
\\\\\\\\ #吃掉連續(xù)兩個(gè)轉(zhuǎn)義符(表示轉(zhuǎn)義符自身)
\\\\' #吃掉轉(zhuǎn)義符接著一個(gè)引號(hào)(表示轉(zhuǎn)義的引號(hào))
[^'\\\\]* #其他字符
)*
'
)
)*
>
.*? #標(biāo)簽內(nèi)容
</(?1)> #結(jié)束標(biāo)簽
;x
heredoc
, $s, $matches, PREG_OFFSET_CAPTURE, $o);
if ( $is_match ) {
foreach ( $matches[0] as $match ) {
$o0 = $match[1];
#標(biāo)簽左邊界越過截取目標(biāo)右邊界, 退出
if ( $o0 >= $o + $l ) break;
$l0 = strlen($match[0]);
#標(biāo)簽右邊界在截取目標(biāo)右邊界內(nèi), 繼續(xù)
if ( $o0 + $l0 < $o + $l ) continue;
#以下為標(biāo)簽跨邊界處理
$l = $o0 + $l0 - $o;
break;
}
}
return substr($s, $o, $l);
}
echo $str . chr(10);
echo substr_remain_tag($str, 0, 20) . chr(10);
您可能感興趣的文章:
- php輸出xml格式字符串(用的這個(gè))
- PHP如何將XML轉(zhuǎn)成數(shù)組
- PHP生成和獲取XML格式數(shù)據(jù)的方法
- php實(shí)現(xiàn)的xml操作類
- PHP讀取配置文件類實(shí)例(可讀取ini,yaml,xml等)
- PHP生成json和xml類型接口數(shù)據(jù)格式
- php使用simplexml_load_file加載XML文件并顯示XML的方法
- php實(shí)現(xiàn)將數(shù)組轉(zhuǎn)換為XML的方法
- php通過正則表達(dá)式記取數(shù)據(jù)來讀取xml的方法
- php+xml結(jié)合Ajax實(shí)現(xiàn)點(diǎn)贊功能完整實(shí)例
- PHP實(shí)現(xiàn)返回JSON和XML的類分享
- php遍歷解析xml字符串的方法
相關(guān)文章
php中的Base62類(適用于數(shù)值轉(zhuǎn)字符串)
以下是對(duì)php中Base62類的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-08-08PHP利用正則表達(dá)式將相對(duì)路徑轉(zhuǎn)成絕對(duì)路徑的方法示例
這篇文章主要介紹了PHP利用正則表達(dá)式將相對(duì)路徑轉(zhuǎn)成絕對(duì)路徑的方法,文中給出了詳細(xì)的示例代碼,大家可以整合成一個(gè)方法,在需要的地方調(diào)用,非常的不錯(cuò)。需要的朋友們下面來一起看看吧。2017-02-02Zend?Framework框架等常用php框架中存在的問題
這篇文章主要介紹了Zend?Framework框架等常用php框架中存在的問題2008-01-01WordPress中用于創(chuàng)建以及獲取側(cè)邊欄的PHP函數(shù)講解
這篇文章主要介紹了WordPress中用于創(chuàng)建以及獲取側(cè)邊欄的PHP函數(shù)講解,分別為register_sidebar()函數(shù)和get_sidebar()的使用,需要的朋友可以參考下2015-12-12