これもけっこうはまったので備忘録。
xPathを使ってXMLデータをフィルタリングする際、部分一致をするときにはcontainsを使うんだけど、その方法。
item要素が複数あり、その子要素のBASIC、さらにその子要素のhogeの値が’fuga’であるitem要素だけをフィルタリングしたいときの、記述方法がこちら。
$products = $xml->xpath("/rss/channel//item[contains(BASIC/hoge,'fuga')]");
ポイントは、取得したい一番上の要素(この場合item)の前のスラッシュを2つにすることと、そのあとにcontainsを書いて条件が含まれる孫要素までの記載をすること(この場合は、BASIC/hoge)。
こうすることで、指定したキーワードが含まれる要素を取得することが可能です。