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";
}
結果
あああ,いいい
ううう,えええ
元ソースの書き方によっては正規表現の部分を変えて下さい。
覚え書きブログになりつつある今日この頃…
特定の範囲を抜き出して処理するなんてことが結構あります。(ないか…
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";
}
結果
あああ,いいい
ううう,えええ
元ソースの書き方によっては正規表現の部分を変えて下さい。
覚え書きブログになりつつある今日この頃…
5 Comments
4月 st, 2010 5:02 PM
w3mでテキスト化->sedでデリミタというか余分なスペースをつぶし->awkで必要なカラムを抜き出す
というふうに片付けました。PHPは知らないんですけど、Perlなんかと同じように使えるもんですねえ(当たり前か
今の時代、JavascriptとPHPくらいは自在に使えるようじゃないとダメかな…
4月 rd, 2010 12:04 AM
PHPだとWebサーバありきなので環境が限られますが
MAMPなんかで環境はすぐできますしね。
MySQLにデータ入れ込んであとで自由自在ですし便利ですよ。
9月 th, 2013 10:56 PM
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!
12月 th, 2013 8:01 AM
It’s on a entirely different subject but it has pretty much
the same page layout and design. Wonderful choice of colors!
2月 rd, 2014 10:22 AM