取得するデータにも依るんですけど「file_get_contents」を使って読み込んだデータをオブジェクトに代入する時には、私は「simplexml_load_string」をよく使っています。それで、たまにデータが「CDATA」で囲まれている場合があります。
こんな感じで、CDATAで囲まれてる
<Content><![CDATA[取得したデータ]]></Content>
そんな時は「LIBXML_NOCDATA」を指定すると、いい感じで取得できます。
LIBXML_NOCDATA (integer)
CDATA をテキストノードとしてマージ(引用:PHP: 定義済み定数 – Manual)
早速やってみましょう~。書き方は、こんな感じです。
サンプル
$xml = file_get_contents('読み込むファイルなど'); simplexml_load_string($xml,'SimpleXMLElement',LIBXML_NOCDATA);
やっていること
変数「$xml」に「file_get_contents」を使って読み込んだデータを格納。「simplexml_load_string」引数を指定。第1引数に変数「$xml」、第2引数に「SimpleXMLElement」、第3引数に「LIBXML_NOCDATA」を指定。
第3引数に指定できる値はほかにもあります。「PHP: 定義済み定数 – Manual」に一覧がありますので、ご参考ください。これは知っておいてよかったです。
第2引数「class_name」について
このオプションのパラメータを使用して、 simplexml_load_file() が指定されたクラスのオブジェクトを返すようにします。 このクラスは、SimpleXMLElement クラスを継承していなければなりません。
第2引数「class_name」は「SimpleXMLElement」を継承するクラス名を指定します。自作した「SimpleXMLElement」を継承させたクラス名でもOK。特別な使い方をしないのであれば、通常は「SimpleXMLElement」で大丈夫だと思います。
参考リンク
「simplexml_load_file」も読むと、大変勉強になります。
PHP: file_get_contents – Manual
PHP: simplexml_load_string – Manual
PHP: simplexml_load_file – Manual
PHP: SimpleXMLElement – Manual
このページを共有する