天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP cdata 處理(詳細介紹)

當時在網上找了一個CDATA的轉換器, 修改之后, 將CDATA標簽給過濾掉。如下
復制代碼 代碼如下:
 // States:
        //
        //     'out'
        //     '<'
        //     '<!'
        //     '<!['
        //     '<![C'
        //     '<![CD'
        //     '<![CDAT'
        //     '<![CDATA'
        //     'in'
        //     ']'
        //     ']]'
        //
        // (Yes, the states a represented by strings.)
        //
        $state = 'out';
        $a = str_split($xml);
        $new_xml = '';
        foreach ($a AS $k => $v) {
            // Deal with "state".
            switch ( $state ) {
                case 'out':
                    if ( '<' == $v ) {
                        $state = $v;
                    } else {
                        $new_xml .= $v;
                    }
                break;
                case '<':
                    if ( '!' == $v  ) {
                        $state = $state . $v;
                    } else {
                        $new_xml .= $state . $v;
                        $state = 'out';
                    }
                break;
                 case '<!':
                    if ( '[' == $v  ) {
                        $state = $state . $v;
                    } else {
                        $new_xml .= $state . $v;
                        $state = 'out';
                    }
                break;
                case '<![':
                    if ( 'C' == $v  ) {
                        $state = $state . $v;
                    } else {
                        $new_xml .= $state . $v;
                        $state = 'out';
                    }
                break;
                case '<![C':
                    if ( 'D' == $v  ) {
                        $state = $state . $v;
                    } else {
                        $new_xml .= $state . $v;
                        $state = 'out';
                    }
                break;
                case '<![CD':
                    if ( 'A' == $v  ) {
                        $state = $state . $v;
                    } else {
                        $new_xml .= $state . $v;
                        $state = 'out';
                    }
                break;
                case '<![CDA':
                    if ( 'T' == $v  ) {
                        $state = $state . $v;
                    } else {
                        $new_xml .= $state . $v;
                        $state = 'out';
                    }
                break;
                case '<![CDAT':
                    if ( 'A' == $v  ) {
                        $state = $state . $v;
                    } else {
                        $new_xml .= $state . $v;
                        $state = 'out';
                    }
                break;
                case '<![CDATA':
                    if ( '[' == $v  ) {
                        $cdata = '';
                        $state = 'in';
                    } else {
                        $new_xml .= $state . $v;
                        $state = 'out';
                    }
                break;
                case 'in':
                    if ( ']' == $v ) {
                        $state = $v;
                    } else {
                        $cdata .= $v;
                    }
                break;
                case ']':
                    if (  ']' == $v  ) {
                        $state = $state . $v;
                    } else {
                        $cdata .= $state . $v;
                        $state = 'in';
                    }
                break;
                case ']]':
   if (  '>' == $v  ) {
    $new_xml .= htmlentities($cdata);
#       $new_xml.= $cdata;
//                        $new_xml .= str_replace('>','>',
  //                                  str_replace('>','<',
    //                                str_replace('"','"',
      //                              str_replace('&','&',
        //                            $cdata))));
                        $state = 'out';
                    } else {
                        $cdata .= $state . $v;
                        $state = 'in';
                    }
                break;
            } // switch
        }
        //
        // Return.
        //
            return $new_xml;

最近發現,總是有alert發出來, 說是simplexml解析出錯。

發現是原來有xml的數據是<![CDATA[domain[test]]] >. 出現了連續的3個], 造成上面的解析函數不能處理。

而且這個問題很難修正, 你不知道下次會不會有4, 5個]出現。

所以決定還是將這段解析 的代碼換成DOM XML,本身 DOM的處理還是比較簡單的,

包含DOMElement, DOMDocument, DOMNodeList, DOMNode幾個 component.

對于 DOMNode有nodeValue, nodeType, nodeName的成員函數。

首先先用loadXML將string轉化為DOMDocument對像, 再用getElementsByTagName轉化為DOMNodeList對像, 再使用->item(0)轉化為DOMNOde, 然后就可以使用上面的三種方法了。

對于 <aa color='red'>test</aa>這種xml標簽, 要使用 attribute函數。

php技術PHP cdata 處理(詳細介紹),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产精品欧美一区二区在线看 | 2020最新国产自产精品 | 99热这里只有精品6 99热这里只有精品 99热这里只有的精品 | 网友自拍区视频精品 | 午夜理论片日本中文在线 | 俄罗斯XXXXXL18| 精品国产乱码久久久久久夜深人妻 | 最近免费视频中文2019完整版 | 免费在线视频一区 | 国产白丝精品爽爽久久蜜臀 | 亚洲精品国产精品麻豆99 | 琪琪伦伦影院理论片 | 一二三四在线播放免费观看中文版视频 | 久久这里只有是精品23 | 国产精品免费大片一区二区 | 中文字幕一区二区视频 | 色欲午夜无码久久久久久 | 欧美精品一区二区在线电影 | 亚洲天堂一区二区三区 | 热综合一本伊人久久精品 | 久久久久亚洲精品影视 | 自拍偷拍2| 高清撒尿hdtube撒尿 | 骚浪插深些好烫喷了 | 九九免费高清在线观看视频 | 久久日本精品国产精品 | 一个人在线观看免费高清视频在线观看 | 精品国产国产综合精品 | 小小水蜜桃3视频在线观看 小向美奈子厨房magnet | 国产午夜亚洲精品理论片八戒 | 少妇无套内谢久久久久 | 国产又黄又粗又爽又色的视频软件 | 三级成人电彭 | 国内外成人免费在线视频 | 果冻传媒在线观看高清完整免费 | 天天夜夜草草久久亚洲香蕉 | 一个人免费观看完整视频日本 | 扒开女人下面使劲桶视频 | 中国女人内谢69XXXXXA片 | 午夜国产一区在线观看 | 18禁无遮遮挡羞漫画免费阅读 |