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】【Slim】インストールー手動ダウンロード と Composer
ずーっと思ってた、CakeとかCodeIgnaitorとか、俺には多機能すぎる! …
-
-
phpでcURLのhttps接続時エラー
“TCP connection reset by pe …
-
-
[php][日付け]指定日と日数を入力してその期間の日付け配列を取得する
123456789//開始日から指定日数分のdate 配列の取得private function get_date_list($begin, $count){$i = 0;$arr_date=[];while($i < $count){$arr_date[] = date( "Y-m-d", strtotime("$begin +$i day ") );$i++;}return $arr_date;…
-
-
クロームでブラウザ・端末エミュレート機能の使い方。えらく見つけづらくなった。。
クロームのエミュレーターが見つけづらくなったのでメモ。 ①デベロッパーツールを開 …
-
-
CentOSをインストールしたときにいつも最初にやること(apache mysql phpのインストール)
SElinuxの無効化 iptableの無効化 apacheのインストール・自動 …