HTMLの抽出と整形に関しての質問です。


下記のようなPHPを利用しての外部HTMLの整形をしたいのですが、
私が実際にコーディングをした事がないので教えていただけますか?
最終的には、ページ内に直接記述する形でまとめたいと思っています。


1.
http://www.examples.com/index.htmlをGETにてデータ取得。
SJIS→UTF8に変更。

2.
取得したデータのうち、
開始位置:<TABLE CELLSPACING=1 CELLPADDING=0 BORDER=0 WIDTH=721
終了位置:</TABLE></td></tr></table>
を抽出(データ内1箇所のみ存在する)

3.
さらに、2にて抽出したデータ内の
開始位置:<dt>
から
終了位置:</dt>
までのテキストを、
<img>
に置換。
データ内に複数箇所存在するため、これをデータ最後部分まで繰り返す。
※<dt><dt></dt>となっている場合は考慮しない。

4.整形したデータを表示(UTF8)

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

回答の条件
  • 1人2回まで
  • 登録:2006/07/18 17:43:16
  • 終了:2006/07/19 12:31:43

回答(1件)

id:lains_you No.1

lains_you回答回数50ベストアンサー獲得回数102006/07/19 10:41:56

ポイント60pt

1.GETによる取得

 単にデータを取得するだけならfile_get_contents(url)などで簡単にできますが、明示的にGETメソッドを使いたい場合は以下のサイトが参考になります。

PHPのちょっとしたTIPS - HTTPクライアント


2,3,4.上記以外

//PHPのちょっとしたTIPS - http関数内の変数$DATAの文字コード変換
$DATA[1] = mb_convert_encoding($DATA[1], 'UTF-8', 'auto');

//TABLE検索文字列(正規表現)
$pattern = "<TABLE CELLSPACING=1 CELLPADDING=0 BORDER=0 WIDTH=721>.*</TABLE></td></tr></table>";

//検索文字列を検索
if( ereg($pattern, $DATA[1], $ary ) ){
	//dt検索文字列(正規表現)
	$pattern = "<dt>([^<>]*)</dt>";

	//img置換対象文字列
	// ()内をsrc属性と右の文字列に設定、BR改行つき
	$replace = "<img src='\\1'>\\1<br>";

	//header出力
	header("Content-Type: text/html; charset=UTF-8");

	//置換結果文字列を出力
	echo ereg_replace($pattern,$replace ,$ary[0]);
}

5.ソース

 http://www.examples.com/index.htmlに対象の文字列がなかったので、以下のように適当に作成しました。

<html>
<head>
<body bgcolor="#000000" text="#99CCFF" link="#FF0000" vlink="#FF0000" alink="#FF0000">

<TABLE CELLSPACING=1 CELLPADDING=0 BORDER=0 WIDTH=721>
<dt>あ</dt>
<dt>い</dt>
<dt>う</dt>
<dt>え</dt>
<dt>お</dt>
</TABLE></td></tr></table>

</p>
</body>
</html>
id:sou600

具体的なHTMLソースを提示せず申し訳ありません。そんな中、具体的な返答ありがとうございました!

2006/07/19 12:30:55

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • 正規表現大変 file_get_contents()。 こんなのまで関数で用意されているんですね、PHP ▽HTMLの抽出と整形に関しての質問です。 (人力検索はてな)  http://q.hatena.ne.jp/1153212194 敷居が低すぎという
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません