質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

731閲覧

PHPのDOMDocumentで'$node->hasClass('hoge')'を実行する方法

AquilaniAlberto

総合スコア12

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/11/28 05:34

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')) { // 〜〜〜 } } }

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問