ホームページ  >  記事  >  バックエンド開発  >  PHP cdata処理(詳細紹介)_PHPチュートリアル

PHP cdata処理(詳細紹介)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:00:26909ブラウズ

そんな時、インターネットでCDATAコンバータを見つけたので修正したところ、CDATAタグが除外されてしまいました。以下の通りです

コードをコピーします コードは次のとおりです:

// 状態:
//
// 'out'
// '<'
// ' // ' // ' // ' // ' // ' // 'in'
']'
/ / ']]'
/ /
// (はい、状態は文字列で表されます。)
//
$state = 'out';
$a = str_split($xml);
$new_xml = '';
foreach ($a AS $ k => $v) {
// 「状態」を処理します。
switch ( $state ) {
case 'out':
if ( '<' == $v ) {
$state = $v;
} else {
$new_xml .= $v;
}
ブレーク;
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 ' if ( 'D' == $v ) {
$state = $state 。 $v;
} else {
$new_xml .= $state 。 $v;
$state = 'out';
}
休憩;
case ' if ( 'A' == $v ) {
$state = $state 。 $v;
} else {
$new_xml .= $state 。 $v;
$state = 'out';
}
Break;
case ' if ( 'T' == $v ) {
$state = $state 。 $v;
} else {
$new_xml .= $state 。 $v;
$state = 'out';
}
Break;
case ' if ( 'A' == $v ) {
$state = $state 。 $v;
} else {
$new_xml .= $state 。 $v;
$state = 'out';
}
Break;
case ' 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_re place('"','"',
// str_replace('&',' &',
// $cdata)));
$state = 'out';
} else {
$cdata .= $state 。 $v;
$state = 'in';
}
Break;
} // switch
}
//
// Return.
//
return $new_xml;

最近発行现、总是有アラート発行

発行された元の xml のデータは です。

さらにこの問題は修正されており、次に 4、5] が発生しないことがわかります。のコードは DOM XML に変換され、DOM 自体の処理もより単純であり、

DOMElement、DOMDocument、DOMNodeList、DOMNode コンポーネントが含まれます。

DOMNode には、nodeValue、nodeType、nodeName の関数が含まれます。

まず、loadXML を使用して文字列を DOMDocument 対の画像に変換し、次に getElementsByTagName を使用して DOMNodeList 対の画像に変換し、さらに ->item(0) を使用して DOMNOde に変換します。

test このような xml テストには、属性関数が使用されます。

http://www.bkjia.com/PHPjc/328068.html

tru​​ehttp://www.bkjia.com/PHPjc/328068.html技術記事ネットワーク上で 1 つの CDAT のスイッチが検出されると、変更後に CDAT がフィルタリングされます。 // 状態: // // 'out' // '' // '!' // '![' // '![C' /...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。