こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

file_get_contentsで抽出後の処理

ウェブ上のhtmlをPHPのfile_get_contents関数で抽出し、mb_convert_encodingをした後、必要なテーブル部分を抽出したのですが、その後の処理に困っています。

header("Content-Type: text/html; charset=UTF-8");
$page = file_get_contents ('http://xxxxxxxxxxxx.php');
$fp = mb_convert_encoding($page, "UTF-8", "ASCII,JIS,UTF-8,CP51932,SJIS-win");
$text = substr($fp, $letter, $num);


substrで取り出した文字列を編集しているのですがうまくいきません。

取り出した内容は下記の内容で、これをテーブルの部分だけにしたいです。
preg_replaceを使って正規表現で処理するような気がしたので、色々と試しては見たのですが、タグと文字列を同時に消すことが出来ません。(タグだけを消すことは出来ます)

-----------------------------------------------------------

<div id="momiji_box">

<p class="p_menu"><a name=menu_1 id=menu_1> <p>
<table class="no_border">
<tr><td class="no_border_td"><h3 id="this_week_flower">洛北</h3></td></tr>
</table>
<div class="flower_photo">
<br />延暦寺の紅葉</div>
<div class="flower_photo">
<br />曼殊院の紅葉</div>
<div class="flower_photo">
<br />赤山禅院の紅葉</div>
<p style="margin:0 0 10px;" class="c-fix">&nbsp;</p>
<div class="clear_l"></div>
<table class="border">
<thead>
<tr>
<th colspan=2>紅葉の名所</th>
<th>電話番号(075)</th>
<th>例年の見頃</th>
<th>10月30日現在</th>
</tr>
</thead>
<tbody>
<tr>

<td colspan=2>常照皇寺
</td>
<td>853-0003</td>
<td>11/上</td>
<td>色付き始め</td>
</tr>

<tr>

<td colspan=2>峰定寺
</td>


・・・・・・
/tbody>
</table>

</div>

-----------------------------------------------------------

どうすれば、テーブル部分のみ抽出することができるでしょうか、ご教授宜しくお願いします。

【環境】
Windows7
PHP5.3
共用Xserver

投稿日時 - 2014-10-31 18:26:31

QNo.8809128

困ってます

質問者が選んだベストアンサー

$table = preg_match('@<table>.*?</table>@is', $text, $m) ? $m[0] : null;

投稿日時 - 2014-10-31 18:30:12

お礼

ありがとうございます。
望んでいた抽出が出来ました。

投稿日時 - 2014-11-10 12:15:40

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

普通、正規表現ではなくてDOM使うだろ。

投稿日時 - 2014-11-01 00:51:46

お礼

お答えを参考に調べてみました。
なるほど、DOMの方がいい感じで次の処理に流せるのでよかったです。
ありがとうございました。

投稿日時 - 2014-11-10 12:18:41

あなたにオススメの質問