以下のプログラムを組んでいただいたのですが
これを実行した時 1回が2つセレクトボックスに出てしまいます。
重複しているものを削除したいのですがどこをいじればいいでしょうか?
あと、一番最後のoptionには selected="selected" を追加して欲しいのですが
その場合どこをいじればいいでしょうか?
<html><body> <?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="kai1">' . "\n"; foreach( $trs as $tr ) { if ( preg_match_all("#<td[^<]+?(.+?)</td#is", $tr[1], $tds , PREG_SET_ORDER) ) { $s .= '<option value="' .$tds[0][1]. '">' .$tds[0][1] . '回</option>' . "\n"; } } $s .= '</select>' . "\n"; } echo ( $s ); ?> <TABLE> <tr> <td>1</td> </tr> <tr> <td>1</td> </tr> <tr> <td>2</td> </tr> <tr> <td>3</td> </tr> </TABLE></body></html>
重複削除と末尾だけ別扱いということで、
アレイに蓄積→重複削除→末尾だけ調整→出力という流れに変えてみました。
<html><body> <?php $s = ''; $b = strip_tags( @file_get_contents( __FILE__ ), '<tr><td>'); if ( preg_match_all("#<tr[^<]+?(.+?)</tr#is", $b, $trs , PREG_SET_ORDER) ) { $a = array(); foreach( $trs as $tr ) { if ( preg_match_all("#<td[^<]+?(.+?)</td#is", $tr[1], $tds , PREG_SET_ORDER) ) { $a[] = '<option value="' . $tds[0][1] . '">' . $tds[0][1] . '回</option>'; } } $a = array_unique( $a, SORT_REGULAR ); $a[] = preg_replace( '#([^>]+?)>(.+)#', '$1 selected="selected">$2', array_pop( $a ) ); $s = '<select name="kai1">' . "\n"; $s .= join( $a, "\n" ) . "\n"; $s .= '</select>' . "\n"; } echo ( $s ); ?> <TABLE> <tr> <td>1</td> </tr> <tr> <td>1</td> </tr> <tr> <td>2</td> </tr> <tr> <td>3</td> </tr> </TABLE></body></html>
重複削除と末尾だけ別扱いということで、
アレイに蓄積→重複削除→末尾だけ調整→出力という流れに変えてみました。
<html><body> <?php $s = ''; $b = strip_tags( @file_get_contents( __FILE__ ), '<tr><td>'); if ( preg_match_all("#<tr[^<]+?(.+?)</tr#is", $b, $trs , PREG_SET_ORDER) ) { $a = array(); foreach( $trs as $tr ) { if ( preg_match_all("#<td[^<]+?(.+?)</td#is", $tr[1], $tds , PREG_SET_ORDER) ) { $a[] = '<option value="' . $tds[0][1] . '">' . $tds[0][1] . '回</option>'; } } $a = array_unique( $a, SORT_REGULAR ); $a[] = preg_replace( '#([^>]+?)>(.+)#', '$1 selected="selected">$2', array_pop( $a ) ); $s = '<select name="kai1">' . "\n"; $s .= join( $a, "\n" ) . "\n"; $s .= '</select>' . "\n"; } echo ( $s ); ?> <TABLE> <tr> <td>1</td> </tr> <tr> <td>1</td> </tr> <tr> <td>2</td> </tr> <tr> <td>3</td> </tr> </TABLE></body></html>
コメント(0件)