teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

補足に伴い回答内容を変更

2015/11/27 00:21

投稿

nage
nage

スコア144

answer CHANGED
@@ -1,7 +1,15 @@
1
+ --再編集--
1
- こういうこと
2
+ こういうことでしょうかね。
3
+ 編集したのは編集ブロックのとこだけ。
2
4
 
5
+ 該当する配列のそれぞれの値に対して
6
+ 1.trim()を使って前後の余計な文字を除去する。timestampだけ後ろに改行コード(\n)がひっついてるので。
7
+ 2.mb_substr()を使って{}を除去した文字列を抜き出す。(1文字目から-1文字まで抜き出し)
8
+ 3.配列に突っ込む。
9
+
3
10
  ```PHP
4
11
  <?php
12
+
5
13
  $name = $_POST['name'];
6
14
  $name = htmlspecialchars($name);
7
15
 
@@ -18,6 +26,41 @@
18
26
 
19
27
  $line = file("kb.txt");
20
28
  $num = count($line);
29
+
30
+ $write = "{". $num . "}<>{" . $name . "}<>{" . $comment . "}<>{" . $time . "}";
31
+
32
+ if (!empty($name) && !empty($comment)) {
33
+ $fp = fopen ("./kb.txt","a");
34
+ fputs ($fp, $write."\n");
35
+ fclose ($fp);
36
+ }
37
+
38
+ if (!empty($delete)) {
39
+ $delCon = file("kb.txt");
40
+ for ($j = 0; $j < count($delCon) ; $j++) {
41
+ $delData = explode("<>", $delCon[$j]);
42
+ if ($delData[0] == "{".$delete."}") {
43
+ array_splice($delCon, $j, 1);
44
+ file_put_contents("./kb.txt", $delCon);
45
+ }
46
+ }
47
+ }
48
+
49
+ // $editが'0'のときif文通らない
50
+ if (!empty($edit)) {
51
+ $ediCon = file("kb.txt");
52
+ for ($k = 0; $k < count($ediCon) ; $k++) {
53
+ $ediData = explode("<>", $ediCon[$k]);
54
+ if ($ediData[0] == "{".$edit."}") {
55
+ //$simEdit = explode("}<>{", $ediCon[$k]);
56
+ for($h = 0; $h < count($ediData); $h++){
57
+ $simEdit[$h] = mb_substr(trim($ediData[$h]), 1, -1);
58
+ }
59
+ }
60
+ }
61
+ }
62
+
63
+
21
64
  ?>
22
65
  <!DOCTYPE html>
23
66
  <html>
@@ -27,13 +70,12 @@
27
70
  </head>
28
71
 
29
72
  <body>
30
-
31
73
  <form method="POST" action="<?php echo($_SERVER['PHP_SELF']) ?>">
32
74
  <label for="name">名前:</label>
33
- <input type="text" name="name" value="<?php echo $name; ?>"><br><br>
75
+ <input type="text" name="name" value="<?php echo $simEdit[1]; ?>"><br><br>
34
76
 
35
77
  <label for="comment">コメント:</label>
36
- <textarea name="comment" cols="30" rows="5" value="<?php echo $simEdit[2]; ?>"><?= $comment ?></textarea><br>
78
+ <textarea name="comment" cols="30" rows="5"><?php echo $simEdit[2]; ?></textarea><br>
37
79
  <input type="submit" value="投稿する">
38
80
  </form>
39
81
 
@@ -53,51 +95,18 @@
53
95
  <input type="submit" value="編集する">
54
96
  </form>
55
97
 
56
-
98
+ <?php
57
99
 
58
- <?php
59
-
60
-
61
- $write = "{". $num . "}<>{" . $name . "}<>{" . $comment . "}<>{" . $time . "}";
62
-
63
- if (!empty($name) && !empty($comment)) {
64
- $fp = fopen ("./kb.txt","a");
65
- fputs ($fp, $write."\n");
66
- fclose ($fp);
67
- }
68
-
69
- if (!empty($delete)) {
70
- $delCon = file("kb.txt");
71
- for ($j = 0; $j < count($delCon) ; $j++) {
72
- $delData = explode("<>", $delCon[$j]);
73
- if ($delData[0] == "{".$delete."}") {
74
- array_splice($delCon, $j, 1);
75
- file_put_contents("./kb.txt", $delCon);
76
- }
77
- }
78
- }
79
-
80
- if (!empty($edit)) {
81
- $ediCon = file("kb.txt");
82
- for ($k = 0; $k < count($ediCon) ; $k++) {
83
- $ediData = explode("<>", $ediCon[$k]);
84
- if ($ediData[0] == "{".$edit."}") {
85
- $simEdit = explode("}<>{", $ediCon[$k]);
86
- }
87
- }
88
- }
89
-
90
- $contents = file('kb.txt');
100
+ $contents = file('kb.txt');
91
101
  foreach($contents as $line){
92
102
  $data = explode("<>", $line);
93
103
  for($i = 0 ; $i < count($data); $i++){
94
104
  echo $data[$i]."<br>";
95
105
 
96
106
  }
97
- }
107
+ }
98
-
108
+
99
- ?>
109
+ ?>
100
-
101
- </body>
110
+ </body>
102
- </html>
111
+ </html>
103
112
  ```