For Want Of A Better Word

phpでsimplexml_load_fileを使ってハマった所

      2015/04/18

スクレイピングの一歩としてrssをパースしようとした。
その時「simplexml_load_file」を使ったのだけれどこつこつ詰まるので記録。

パースしたデータはオブジェクトなので、Stringと型比較をすると一致しない。

単純にテキストと「===」とかで比較するとfalseになる。
DBに投げて、WHERE条件なんかで比較しても一致しないことになる。
比較する前にキャストしろ!

【参考】http://killonebirdwithtwostones.hatenablog.com/entry/20120920/1348130514

サンキュー!!

descriptionが取れない

【参考】http://qiita.com/s0hno/items/36316dbb737ebe8b2bcf
サンキュー!!

descriptionでとった値が再度オブジェクトに設定しようとしても、うまく行かない。

別名プロパティで設定してやった。
これでえーやと。。。

特定のタグ(ユニークで無い)だけにアクセスしたい

[参考]http://php.net/manual/ja/simplexml.examples-basic.php
下記でOK

foreach($obj->タグ As $data){
//処理
}

@attributesのデータ取得方法

[参考]http://php.net/manual/ja/simplexmlelement.attributes.php
attributes()メソッドで配列として取得するしかないみたい。
なんのためにこうなっているのかはいまいち不明。

元データ
object(SimpleXMLElement)#14 (9) {
[“title”]=>
string(XX) “タイトル”
[“link”]=>
object(SimpleXMLElement)#9 (1) {
[“@attributes”]=>
array(XX) {
[“type”]=>
string(9) “text/html”
[“href”]=>
string(41) “http://sample.jp/
}
}

こんな感じの時にhrefを取るとしたら

$attr = $obj->link->attributes();
echo $attr[“href”];

という感じになる。

 - php

  関連記事

[PHP][PDO]prepareでのバインド方法整理

データをstmtに渡す部分をちょくちょく待ちがえて混乱するのでメモ 参考:htt …

【PHP】【Slim】インストールー手動ダウンロード と Composer

ずーっと思ってた、CakeとかCodeIgnaitorとか、俺には多機能すぎる! …

[ruby][php]Excel出力操作の方法

Excel出力が要件としてもとめられた、言語は問わない、WEBではなくバッチで。 …

CakePHPでjoinしようとしたときのエラー 【Notice (8): Undefined offset: 0 [CORE/Cake/Model/Datasource/DboSource.php, line 1714]】

Cakeでfind()からjoinしようとしたときに下記Noticeが出て、検索 …

辞書順比較・数値順比較・自然順の違い

Contents1 辞書順と数値順2 (補足)辞書順で、「文字と数字」 「大文字 …