プロが教える店舗&オフィスのセキュリティ対策術

ウェブ上の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"></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

A 回答 (2件)

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2014/11/10 12:18

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2014/11/10 12:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!