PHPでの質問です。


[text.txt]
a,b,c,d,e,f,g,h,i,j,k,l

[table.php]
<table>
<tr><td>○</td></tr>
<tr><td>○</td></tr>
<tr><td>○</td></tr>
<tr><td>○</td></tr>
<tr><td>○</td></tr>
<tr><td>○</td></tr>
<tr><td>○</td></tr>
<tr><td>○</td></tr>
<tr><td>○</td></tr>
<tr><td>○</td></tr>
<tr><td>○</td></tr>
<tr><td>○</td></tr>

text.txtの中にはa~lまでの数値が入っています。
table.phpにはtableタグが入っています。
tableタグの中にある○に
a~lまでそれぞれ順にいれるにはどういった形のコーディングがよいでしょうか?

回答の条件
  • 1人5回まで
  • 登録:2007/01/30 01:11:06
  • 終了:2007/01/30 10:44:30

回答(4件)

id:okuryu No.1

okuryu回答回数72ベストアンサー獲得回数32007/01/30 02:01:31

ポイント23pt

こんな感じでどうでしょうか。

$txt = file("text.txt");
$db = explode(",", rtrim($txt[0]));

echo "<table>";

foreach ($db as $value) {
    echo "<tr><td>" . $value . "</td></tr>";
}

echo "</table>";
id:quocard

シンプルで参考になります。

ありがとうございます。

2007/01/30 10:42:03
id:bonlife No.2

回答回数421ベストアンサー獲得回数752007/01/30 02:03:43

ポイント23pt

以下のようなやり方はいかがでしょうか。

<?php

$lines = file('text.txt');
$numbers = explode(",",$lines[0]);

print "<table>\n";
foreach ( $numbers as $number ) {
    print "<tr><td>" . trim($number) . "</td></tr>\n";
}
print "</table>\n";
?>

あるいはテンプレートファイルのようなもの(table.tpl)を使いたいのであれば、内容を読み込みながら、適宜置換する書き換えるような処理を書けば良いです。

(table.tplは質問文のtable.phpをイメージしています。)

<?php

$lines = file('text.txt');
$numbers = explode(",",$lines[0]);

$handle = @fopen("table.tpl","r");
$counter = 0;
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        $pos = strpos($buffer, "○");
        if ($pos === false ) {
            print $buffer;
        } else {
            print str_replace("○", trim($numbers[$counter]), $buffer);
            $counter++;
        }
    }
    fclose($handle);
}
?>

いずれにせよ、text.txtに含まれる値の数と○の数が異なる場合の処理などについては別途考える必要があります。

少しでも参考になれば幸いです。

id:quocard

同じ結果を求めるのにも

複数の答えがあってとても参考になりました。

ありがとうございます。

2007/01/30 10:42:36
id:ctrl-v No.3

ctrl-v回答回数289ベストアンサー獲得回数152007/01/30 02:07:24

ポイント22pt
<?php
echo "<table>\n";
$row = 1;
$handle = fopen("text.txt", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo "<tr><td>".$data[$c] ."</td></tr>\n";
    }
}
fclose($handle);
echo "</table>\n";
?>
id:quocard

データ形式がcsvで固定していれば

こちらの方が効率いいかもしれません。

ありがとうございます。

2007/01/30 10:43:18
id:imaa No.4

imaa回答回数34ベストアンサー獲得回数02007/01/30 04:39:54

ポイント22pt

$fp = fopen('text.txt', 'r');

$i = 0;

while(!feof($fp)){

 $line[$i] = fgetc($fp);$i++;

}

print"<Table>";

$i = 0;

while($line[$i]){

 if($i % 2 == 0){//単純にコンマを抜いた

  print"<Tr><Td>".$line[$i]."</Tr></Td>";

 }

$i++;

}print"</Table>";

?>

これで要望通りに動くと思います。

<を<にしてありますので、注意を。

id:quocard

ループで抜いてきて変数をそれぞれ当てはめるかたちですね。

参考になります。

ありがとうございました。

2007/01/30 10:44:02

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

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

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

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

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