[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までそれぞれ順にいれるにはどういった形のコーディングがよいでしょうか?
こんな感じでどうでしょうか。
$txt = file("text.txt"); $db = explode(",", rtrim($txt[0])); echo "<table>"; foreach ($db as $value) { echo "<tr><td>" . $value . "</td></tr>"; } echo "</table>";
以下のようなやり方はいかがでしょうか。
<?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に含まれる値の数と○の数が異なる場合の処理などについては別途考える必要があります。
少しでも参考になれば幸いです。
同じ結果を求めるのにも
複数の答えがあってとても参考になりました。
ありがとうございます。
<?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"; ?>
データ形式がcsvで固定していれば
こちらの方が効率いいかもしれません。
ありがとうございます。
$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>";
?>
これで要望通りに動くと思います。
<を<にしてありますので、注意を。
ループで抜いてきて変数をそれぞれ当てはめるかたちですね。
参考になります。
ありがとうございました。
シンプルで参考になります。
ありがとうございます。