人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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までそれぞれ順にいれるにはどういった形のコーディングがよいでしょうか?

●質問者: quocard
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP txt コーディング タグ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● okuryu
●23ポイント

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

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

echo "<table>";

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

echo "</table>";
◎質問者からの返答

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

ありがとうございます。


2 ●
●23ポイント

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

<?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に含まれる値の数と○の数が異なる場合の処理などについては別途考える必要があります。

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

◎質問者からの返答

同じ結果を求めるのにも

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

ありがとうございます。


3 ● ctrl-v
●22ポイント
<?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で固定していれば

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

ありがとうございます。


4 ● imaa
●22ポイント

$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>";

?>

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

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

◎質問者からの返答

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

参考になります。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ