PHPで特定の範囲を取り出す

PHPで、HTMLソースから
特定の範囲を抜き出して処理するなんてことが結構あります。(ないか…

tableのセルを抜き出してCSV形式に直すみたいな例
$table=<<<__HTML
<table>
<tr><td>あああ</td><td>いいい</td></tr>
<tr><td>ううう</td><td>えええ</td></tr>
</table>
__HTML;


//1行ごとに抜き出して配列$matchに代入
preg_match_all("/<tr>(.*?)<</tr>/",$table,$match);
//1行ごとにループ処理
foreach ( $match[1] as $tr_value ){
//さらに<td>ごとに抜き出す
preg_match_all("/<td>(.*?)<</td>/",$tr_value,$td_data);
//セルごとにカンマ区切りで文字列に
$sellData= join(",",$td_data[1]);
print $sellData."<n";
}

結果
あああ,いいい
ううう,えええ

元ソースの書き方によっては正規表現の部分を変えて下さい。

覚え書きブログになりつつある今日この頃…

You might also like

5 Comments

  • ken_taka

    4月 st, 2010 5:02 PM

    数日前に全く同じ作業がありました。拡張子はcsvなのに、中身はhtmlでtableが組まれていたというファイル(笑
    w3mでテキスト化->sedでデリミタというか余分なスペースをつぶし->awkで必要なカラムを抜き出す

    というふうに片付けました。PHPは知らないんですけど、Perlなんかと同じように使えるもんですねえ(当たり前か

    今の時代、JavascriptとPHPくらいは自在に使えるようじゃないとダメかな…
  • かむ

    4月 rd, 2010 12:04 AM

    ken_takaさん
    PHPだとWebサーバありきなので環境が限られますが
    MAMPなんかで環境はすぐできますしね。
    MySQLにデータ入れ込んであとで自由自在ですし便利ですよ。
  • Johnny

    9月 th, 2013 10:56 PM

    Greetings from Colorado! I’m bored to death at work so I decided
    to browse your blog on my iphone during lunch break.
    I love the info you present here and can’t wait to take
    a look when I get home. I’m amazed at how quick your blog loaded on my phone ..
    I’m not even using WIFI, just 3G .. Anyways,
    fantastic site!
  • Alexander

    12月 th, 2013 8:01 AM

    Amazing! This blog looks just like my old one!
    It’s on a entirely different subject but it has pretty much
    the same page layout and design. Wonderful choice of colors!
  • Tanie Pozycjonowanie chorzów

    2月 rd, 2014 10:22 AM

    Hi friends, nice piece of writing and fastidious urging commented here, I am actually enjoying by these.

Leave Your Comment