1

XML からデータを抽出していますが、一部のタグにはこのように CDATA 内にデータが含まれています

<description><![CDATA[Changes (as compared to 8.17) include:
Features:
    * Added a &#8216;Schema Optimizer&#8217; feature. Based on &#8220;procedure analyse()&#8221; it will propose alterations to data types for a table based on analysis on what data are stored in the table. The feature is available from INFO tab/HTML mode.  Refer to documentation for details.
    * A table can now be added [...]]]>
</description>

説明タグからデータを抽出するために preq_match を既に使用しています。どうすれば CDATA からデータを抽出できますか?

4

3 に答える 3

7

言語に関係なく、XML の解析に正規表現を使用しないでください。ほとんどの場合、間違いを犯すことになります。XML パーサーを使用します。

于 2009-11-17T05:58:08.817 に答える
0

複雑なデータ セットを抽出する必要がある場合は、 simple_xmlを使用する必要があります。xpath

<?php
$string = <<<XML
<?xml version='1.0'?> 
<document>
 <title>Forty What?</title>
 <from>Joe</from>
 <to>Jane</to>
 <body>
  I know that's the answer -- but what's the question?
 </body>
</document>
XML;

$xml = simplexml_load_string($string);

var_dump($xml);
?>

次のような出力が得られます。

SimpleXMLElement Object
(
  [title] => Forty What?
  [from] => Joe
  [to] => Jane
  [body] =>
   I know that's the answer -- but what's the question?
)

あなたの場合、reg 式よりも簡単にドキュメント内をナビゲートできますね。

于 2009-11-17T06:13:17.610 に答える