文字列をインターセプトし、完全な XML タグを保持する PHP コード
リリース: 2016-07-25 09:05:41
-
- /**
- * 著者: goosman
- * ブログ: http://blog.csdn.net/lgg201
- * メール: lgg860911@yahoo.com.cn
- */
-
- $str = '01234567890120123456789';
- function substr_remain_tag($s, $o, $l) {
- $is_match = preg_match_all(<< ;
- #この正規表現は XML タグを解析します。タグ属性は内部的にエスケープ文字 "" をサポートし、"" 自体と対応する引用符のエスケープをサポートします
- < ( w+) #タグの開始
- (?: #属性リスト
- s+ #先行スペース
- w+ #属性名
- s* #属性名の後の空白(互換性のため)
- = #属性名の値間の等号
- s* #属性値の前に空白 (互換性のため)
- (?: #属性値 (引用処理)
- " #二重引用符の状況
- (?:
- \\\\ #エスケープ文字を 2 つ連続して食べる (エスケープ記号そのものを示す)
- |
- \ \" #エスケープ文字の後に引用符を付けます (エスケープ引用符を表します)
- |
- [^"\\]* #その他の文字
- )*
- "
- |
- ' #単一引用符 Case
- (?:
- \\ \\ #2 つの連続したエスケープ文字を食べる (エスケープ文字自体を表す)
- |
- \\' #エスケープ文字の後に引用符を食べる (エスケープされた引用符を表す)
- [^'\\]* #その他の文字
- )*
- '
- )
- )*
- >
- .*? #タグの内容
- (?1)> #終了タグ
- ;x
- ヒアドキュメント
- 、 $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 ) 続行
-
- #以下はラベルの境界を越えた処理です
- $l = $l0 - $o; return substr( $s , $o, $l);
- echo $str(10);
-
-
- コードをコピーします。
-
-
-
-
|
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31