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

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)

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

●質問者: sou600
●カテゴリ:ウェブ制作
✍キーワード:border HTML PHP SJIS コーディング
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● lains_you
●60ポイント

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>
◎質問者からの返答

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

関連質問


●質問をもっと探す●



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