PHPの質問です

以下のプログラムを組んでいただいたのですが
これを実行した時 1回が2つセレクトボックスに出てしまいます。
重複しているものを削除したいのですがどこをいじればいいでしょうか?
あと、一番最後のoptionには selected="selected" を追加して欲しいのですが
その場合どこをいじればいいでしょうか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/09/12 08:04:33
  • 終了:2013/09/12 13:19:41
id:takanii
<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>

ベストアンサー

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492013/09/12 09:50:00

ポイント300pt

重複削除と末尾だけ別扱いということで、
アレイに蓄積→重複削除→末尾だけ調整→出力という流れに変えてみました。

<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件)

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492013/09/12 09:50:00ここでベストアンサー

ポイント300pt

重複削除と末尾だけ別扱いということで、
アレイに蓄積→重複削除→末尾だけ調整→出力という流れに変えてみました。

<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>

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません