【PHP8.x】simplexml_load_string関数の使い方

作成日: 更新日:

simplexml_load_string関数は、指定されたXML形式の文字列を解析し、それをPHPのオブジェクトとして扱えるSimpleXMLElementオブジェクトに変換する関数です。この関数を利用することで、XMLデータをPHPのオブジェクト指向的な方法で簡単に操作できるようになります。例えば、XMLタグをオブジェクトのプロパティとして、属性を配列要素として直感的にアクセスすることが可能です。

この関数は、主に解析対象となるXML文字列を第一引数に受け取ります。その他にも、XMLパース時の挙動を制御するためのオプションフラグを任意で指定できます。例えば、データ内のCDATAセクションを通常の文字列として結合するかどうかや、特定の名前空間を扱うための設定を行うことが可能です。また、返されるオブジェクトのクラス名を指定して、カスタムのSimpleXMLElement拡張クラスを使用することもできます。

正常にXML文字列を解析できた場合、SimpleXMLElementクラスのインスタンスを返します。このオブジェクトを通じて、XMLデータ内の要素や属性に容易にアクセスできるようになります。しかし、入力されたXML文字列の構文が不正であったり、その他の解析エラーが発生した場合には、論理値のfalseを返します。

この関数は、XMLデータをファイルから読み込むsimplexml_load_file関数と対をなすもので、主にメモリ上の文字列データに対して使用されます。XMLの解析エラーが発生した際には、libxml_use_internal_errors関数とlibxml_get_errors関数を組み合わせて詳細なエラー情報を取得することが推奨されます。システムエンジニアを目指す初心者の方にとって、XMLデータを効率的に処理するための基本的なツールとなりますが、外部からの信頼できないXMLデータを扱う際には、意図しない外部実体参照などのセキュリティリスクを避けるため、適切なオプション設定や入力検証を行うことが重要です。

基本的な使い方

構文(syntax)

<?php
$xml_string = "<root><item>データ</item></root>";
$simple_xml_object = simplexml_load_string($xml_string);
?>

引数(parameters)

string $data, string $class_name = 'SimpleXMLElement', int $options = 0, string $namespace_or_prefix = '', bool $is_prefix = false

  • string $data: XMLデータを格納した文字列
  • string $class_name = 'SimpleXMLElement': 拡張クラス名を指定する文字列。デフォルトは'SimpleXMLElement'
  • int $options = 0: パースオプションを指定する整数。デフォルトは0
  • string $namespace_or_prefix = '': 名前空間またはプレフィックスを指定する文字列。デフォルトは空文字列
  • bool $is_prefix = false: $namespace_or_prefix がプレフィックスかどうかを示す真偽値。デフォルトはfalse

戻り値(return)

SimpleXMLElement|false

XML文字列をパースし、SimpleXMLElementオブジェクトを返します。XMLのパースに失敗した場合はfalseを返します。

【PHP8.x】simplexml_load_string関数の使い方 | いっしー@Webエンジニア