人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでプログラミングをしています。
特定のHTMLファイル内にあるタグと要素を取得したいのですが、そのようなこと全般ができる関数、もしくはクラスというものがありますでしょうか?

●質問者: fm315
●カテゴリ:ウェブ制作
✍キーワード:HTML PHP クラス タグ ファイル
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ●
●19ポイント

Tidy関数というものがあります。

HTMLをパースして処理を行うことができます。

ドキュメント化が進んでいないため、マニュアルをみてもよく分からないこともあると思いますので、実際にサンプルコードを書いて試してみてください。

私もこの関数の使い方がよく分かりませんでしたので、少し検索して使い方を紹介しているサイトを探してみたのですが、良さそうなところが見つかりませんでした。

少しでも参考になると幸いです。

◎質問者からの返答

貴重な情報、有り難うございます。


2 ● wellmin
●19ポイント

http://nyx.pu1.net/function/strings/explode.php

特定のHTMLファイルが定型物ならexplodeを使ってどうにかならないでしょうか?

explodeは文字列を特定の文字列で分割して、配列に入れるものです。

たとえば、あるHTMLファイルの<title></title>間の文字を取りたい場合、

文字列AにHTMLファイルを読み込む。

文字列Aを<title> ◎質問者からの返答

なるほど、ありがとうございます。


3 ● くいっぱ
●18ポイント

私も以前似たようなものを探してそのものずばりのものを残念ながら見つけることはできませんでした。

類似のものとしては、フラグを立てて行き、要素を抜き出すというクラスがありましたが役割としては不十分だと感じました。


タグのエレメントを抜き出すというのであれば、

xml_parser_set_optionなどをつかわれてみてはどうでしょうか?タグのネスト構造はコーディングしてあげないといけませんがattrsにタグ要素などが入ってくるので抜き出すことができます。


ソース付きのサンプル。

http://kuippa.s188.xrea.com/h/

※ネスト構造を読み込むような作りにはなっていません。

getxml.phpのstartElement関数の

($parser, $name, $attrs)あたりを確認してみてください。


あまりお役に立てませんが一助まで…

◎質問者からの返答

参考になります。

有り難うございます。


4 ● masasan
●18ポイント

http://manual.xwd.jp/function.preg-match-all.html

preg_match_allを使われてはいかがでしょうか。

タグの要素に何が入っているか分からないときでもパターンマッチで判定できるので、便利です。

また、上手くパターンを書けば、タグを含めた文字列と要素を配列で返してくれたりもするので便利です。

私自身、kuippaさんのこちらからリンクされているコードを参考に

http://beta.g.hatena.ne.jp/kuippa/20060220

はてなに関するサービスを作ってみました。

http://d.hatena.ne.jp/masasan/20060412

・はてなbookmarkers

・はてな質問者履歴

とりわけbookmarkersのほうではパターンマッチングを便利に使っています。


5 ●
●18ポイント

質問から少し外れてしまうかもしれませんが、既存のHTMLの一部の情報を抜き出して活用する、ということであれば以下の書籍が非常に参考になります。

ほとんどがPerlのサンプルですが、考え方はPHPにも応用できると思います。

Spidering hacks―ウェブ情報ラクラク取得テクニック101選

Spidering hacks―ウェブ情報ラクラク取得テクニック101選

  • 作者: Kevin Hemenway Tara Calishain
  • 出版社/メーカー: オライリー・ジャパン
  • メディア: 単行本

HTMLはXMLのように構造がしっかりとしていないので完全にparseするのは難しいのですが、色々な方法を使って情報の抜き出し、変形などを行っています。

ここから書籍で紹介されているサンプルコードをダウンロードできます。

「hack084」はPHPです。

詳しくは書籍の内容を確認していただきたいのですが、scrape_func.phpというコードにてHTMLから情報を抜き出す(こすり落とす)機能を実装しています。

上記の4つの簡単な関数を定義しています。

oreilly.phpは上記の関数を呼び出して整形した結果をメールで送付するサンプル、oreilly2.phpは解析した結果をRSSにするサンプルです。

現在はO'REILLYのページのHTMLの内容が変わってしまったのでそのままでは使えませんが、情報の区切りとするタグ、情報取得の対象となるタグを変更すれば使うことができます。

今はRSSを出力しているサイトが多いので、こういった技を使わなくても情報を取得して流用することは簡単になっていますが、RSSに対応していないサイトから一部の情報を取得する際には役に立つと思います。

参考になると幸いです。

◎質問者からの返答

ありがとうございます。

まさにしたかったことはこれです。

特定のページのRSSを作成するプログラムを作りたいのですが、そのページは[次へ][戻る]ボタンがついていて、phpの処理としてそのボタンをクリックしなくてはならなくて、ちっと困っています。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ