PHPのDOMDocumentで'$node->hasClass('hoge')'を実行する方法を探しています。
例として、imgタグにhogeクラスがあるかをチェックする場合、
php
1$doc = new \DOMDocument(); 2$doc->loadHTML($html); 3$xpath = new \DOMXpath($doc); 4 5$imgs = $xpath->query('//img'); 6foreach ($imgs as $img) { 7 if ($img->hasAttribute('class') && false !== strpos($img->getAttribute('class'), 'hoge')) { 8 // 〜〜〜 9 } 10}
みたいな感じになると思うんですが、
php
1if ($img->hasAttribute('class') && false !== strpos($img->getAttribute('class'), 'hoge')) { 2 // 〜〜〜 3}
上記の部分を下記のようにしたいと思ってます。
php
1if ($img->hasClass('hoge')) { 2 // 〜〜〜 3}
関数だとこんな感じでしょうか。
$imgを指定するのがが気に入らないので
php
1function hasClass($img, $className) 2{ 3 if ($img->hasAttribute('class') && false !== strpos($img->getAttribute('class'), $className)) { 4 return true; 5 } 6 return false; 7} 8if (hasClass($img, 'hoge')) { 9 // 〜〜〜 10} 11
下記みたいなことをしようとしたのですが、'hasClass'で$imgを取得する方法がわかりません。
class Hoge { public $doc; public $xpath; public function __construct($html) { $this->doc = new \DOMDocument(); $this->doc->loadHTML($html); $this->xpath = new \DOMXpath($this->doc); } public function hasClass($className) { // $imgを操作する方法がわかりません。 if ($img->hasAttribute('class') && false !== strpos($img->getAttribute('class'), 'hoge')) { // 〜〜〜 } } }
よろしくお願いいたします。
あなたの回答
tips
プレビュー