phpの正規表現の質問です
a.phpファイルを作成しています
テーブルタグの中はtrが100個くらい並んでいます
a.php
********************
<html><body>
<?php
$s = '';
$b = strip_tags( @file_get_contents( __FILE__ ), '<tr><td>');
if ( preg_match_all{
}
echo ( $s );
?>
<TABLE>
<tr>
<td>1</td>
<td>1</td>
<td>ほげ1</td>
<td>ほげ2</td>
<td>ほげ3</td>
<td>ほげ4</td>
<tr>
<td>1</td>
<td>2</td>
<td>ほげ5</td>
<td>ほげ6</td>
<td>ほげ7</td>
<td>ほげ8</td>
</tr>
・
・
・
・
</TABLE></body></html>
********************
テーブルタグの中の、一番最初の<tr>の中の上から5番目の<td>タグの中身だけを抽出して
以下のように表示したいのですが
正規表現の条件をどのように書けばいいでしょうか?
a.php
********************
a.php
********************
<html><body>
ほげ4
<TABLE>
<tr>
<td>1</td>
<td>1</td>
<td>ほげ1</td>
<td>ほげ2</td>
<td>ほげ3</td>
<td>ほげ4</td>
<tr>
<td>1</td>
<td>2</td>
<td>ほげ5</td>
<td>ほげ6</td>
<td>ほげ7</td>
<td>ほげ8</td>
</tr>
・
・
・
・
</TABLE></body></html>
********************
※ http://q.hatena.ne.jp/1378870759 の続きと書いておいがほうがよいですよ。
正規表現ではなくコードを入れ替えたほうが応用ききやすいです。
$tds[0][1] が1列目
$tds[1][1] が2列目
$tds[n][1] が(n-1)列目
<?php
$s = '';
$b = strip_tags( @file_get_contents( __FILE__ ), '<tr><td>');
if ( preg_match_all("#<tr[^<]+?(.+?)</tr#is", $b, $trs , PREG_SET_ORDER) ) {
$s = '<select name="問題番号">' . "\n";
$tr = $trs[0]; # 一番最初だけなのでforeachを使わない
if ( preg_match_all("#<td[^<]+?(.+?)</td#is", $tr[1], $tds , PREG_SET_ORDER) ) {
$s .= '<option value="' . $tds[4][1] . '">' . $tds[4][1] . '</option>' . "\n";
}
$s .= '</select>' . "\n";
}
echo ( $s );
?>