simplexml_load_fileで要素名にハイフンがついていると読み込めない
はじめに
simplexml_load_file で要素名にハイフンがついていると読み込めず、「Parse error: syntax error, unexpected ‘[‘」エラーが発生する場合の対処方法です。
現象
simplexml_load_file で取得できなかった User-Agents.org の xml は次のとおりになっていました(抜粋)。
<user-agents>
<user-agent>
<String></String>
</user-agent>
</user-agents>
次の PHP コードを実行するとエラーが発生しました。
<?php
$xml=simplexml_load_file("http://www.user-agents.org/allagents.xml");
print($xml->user-agent[0]->String);
?>
Parse error: syntax error, unexpected ‘[‘ in test.php on line 3
原因
メンバ変数名に特殊文字が入っているため発生します。
92. ハイフン付きのメンバ変数名を参照する方法 | 日経クロステック(xTECH)
https://xtech.nikkei.com/it/article/COLUMN/20080619/308711/
対処方法
次のように変更しました。
$xml->user-agent[0]->String;
↓
$xml->{'user-agent'}[0]->String;