simplexml_load_fileで要素名にハイフンがついていると読み込めず、「Parse error: syntax error, unexpected ‘[‘
」エラーが発生する場合の対処方法です。
現象
403 Forbidden
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. ハイフン付きのメンバ変数名を参照する方法
オブジェクトのメンバ変数を参照する際、PHPでは $obj->element のように指定しますが、まれにelementの変数名にハイフン「-」が入ったものを指定しなければならない場合があります。
対処方法
次のように変更しました。
$xml->user-agent[0]->String;
↓
$xml->{'user-agent'}[0]->String;
コメント