一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

PHP cdata 處理(詳細介紹)

當時在網(wǎng)上找了一個CDATA的轉(zhuǎn)換器, 修改之后, 將CDATA標簽給過濾掉。如下
復(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ā)出來, 說是simplexml解析出錯。

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

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

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

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

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

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

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

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

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

主站蜘蛛池模板: 伊人久久大香线蕉综合7 | 尤物福利在线 | 国产成人精品亚洲 | 丁香综合激情 | 樱花aⅴ一区二区三区四区 影音先锋 色天使 | 国产精视频 | 亚洲人成人毛片无遮挡 | 久综合 | 色老板免费观看在线播放 | 一区二区中文字幕在线观看 | 中文字幕亚洲一区婷婷 | 国产精品高清全国免费观看 | 2021久久精品国产99国产精品 | 精品精品久久宅男的天堂 | 国产福利在线观看视频 | 亚洲综合涩| 欧美成人久久久 | 欧美日韩黄色大片 | 九九视频只有精品 | 亚洲一区二区三区免费观看 | 久久精品国产91久久综合麻豆自制 | 国产亚洲漂亮白嫩美女在线 | 六月婷婷六月天 | 视频黄色在线 | 国产免费美女视频 | 国产成人精品视频在放 | 中文字幕亚洲无线码在线一区 | 激情五月宗合网 | 亚洲视频综合 | 91亚洲免费视频 | 亚洲精品乱码蜜桃久久久 | 四虎影视在线永久免费看黄 | 亚洲国产成人久久午夜 | 亚洲狠狠综合久久 | 婷婷成人丁香五月综合激情 | 夜夜综合 | 91视频网页版 | 91麻豆精品 | 色网在线免费观看 | 无遮挡一级毛片呦女视频 | 国产福利91精品一区二区三区 |