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

PHP cdata 處理(詳細(xì)介紹)

當(dāng)時(shí)在網(wǎng)上找了一個(gè)CDATA的轉(zhuǎn)換器, 修改之后, 將CDATA標(biāo)簽給過(guò)濾掉。如下
復(fù)制代碼 代碼如下:
 // 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;

最近發(fā)現(xiàn),總是有alert發(fā)出來(lái), 說(shuō)是simplexml解析出錯(cuò)。

發(fā)現(xiàn)是原來(lái)有xml的數(shù)據(jù)是<![CDATA[domain[test]]] >. 出現(xiàn)了連續(xù)的3個(gè)], 造成上面的解析函數(shù)不能處理。

而且這個(gè)問(wèn)題很難修正, 你不知道下次會(huì)不會(huì)有4, 5個(gè)]出現(xiàn)。

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

包含DOMElement, DOMDocument, DOMNodeList, DOMNode幾個(gè) component.

對(duì)于 DOMNode有nodeValue, nodeType, nodeName的成員函數(shù)。

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

對(duì)于 <aa color='red'>test</aa>這種xml標(biāo)簽, 要使用 attribute函數(shù)。

php技術(shù)PHP cdata 處理(詳細(xì)介紹),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: yellow片在线观看免费观看动漫 | 亚洲爱视频 | 国产精品97久久AV色婷婷综合 | 亚洲精品AV一区午夜福利 | 性xxx免费| 97国产精品人妻无码免费 | 欧美一区二区视频97色伦 | 国产色综合久久无码有码 | 一边摸一边桶一边脱免费 | 久久久久久人精品免费费看 | 亚洲伊人久久网 | 久久99re6国产在线播放 | 精品午夜视频 | 人人插人人射 | 精品久久综合1区2区3区激情 | 日韩免费视频一区 | 女人麻豆国产香蕉久久精品 | 国产精品久久久久婷婷五月色婷婷 | 欧美黄色一级 | 99在线精品国自产拍 | 夫妻性姿势真人做视频 | 日日摸天天添天天添无码蜜臀 | 欧美视频 亚洲视频 | 欧洲精品一区二区不卡观看 | 亚洲综合色五月久久婷婷 | 国产亚洲精品久久久久苍井松 | 久久久97人妻无码精品蜜桃 | 国产亚洲精品线视频在线 | 欧美性狂猛bbbbbbxxxx | 丰满的大白屁股ass 丰满大屁俄罗斯肥女 | 亚洲精品久久一区二区三区四区 | 国产午夜精品久久理论片 | 超碰免费视频公开观看 | 最近的2019中文字幕国语完整版 | 色老99九久精品偷偷鲁 | 向日葵视频app下载18岁以下勿看 | 男子扒开美女尿口做羞羞的事 | 撅高 自己扒开 调教 | 特污兔午夜影视院 | 野花香在线观看免费观看大全动漫 | 国产99久久久欧美黑人刘玥 |