phpについて。
番号(1,2,3、、、)、内容を含んだフォームを送信して、それをテキストファイルで、配列で保存します。
配列の各要素は、(1)のように番号から始まります。
その配列の各要素の番号だけを取り出したく、substr()の命令で、最初の2文字”(”+”番号”を取り出し、str_replace()で”(”部分を取り除きたいと思っています。
しかし、下記のプログラムを実行し、var_dumpで型の確認をすると、1番目のフォームのみ、番号の文字列の大きさがstring(1)ではなく、string(4)となってしまいます。
これをstring(1)となるようにしたいです。
ご指導をよろしくお願いいたします。
//フォーム
```ここに言語を入力 <form action="URL" method="post"> <table> <tr><td>名前:</td> <td><input type=text name="name"></td></tr> <tr><td>コメント:</td> <td><textarea name="comment" cols="30" rows="5"></textarea></td></tr> <tr><td><input type="submit" name="submit" value="送信"></td></tr></table> </form>
<!-- ファイルに番号、時間、名前、コメント等書き込む--> <?php if(isset($_POST["submit"])){ $fp1 = fopen('kadai_2_4.dat','r+'); $num = fgets($fp1); if (empty($num)){ $num =1;} fseek($fp1,0); //これは必要。なければ、1>2>23>2324....と続く。 fputs($fp1,$num + 1); //フォーム内容と送信時間、送信番号を書き込む。 $timestamp = date("Y/m/d H時i分s秒"); $name = $_POST["name"]; $comment = $_POST["comment"]; $file = "kadai_2_4.txt"; //.txtはフォーム内容 $fp2 = fopen($file, "a+"); fwrite($fp2, "(".$num.")|"."名前:".$name."|コメント: ".$comment."|投稿時間: ".$timestamp.""."\n"); fclose($fp2); fclose($fp1); }?> <!-- ファイルを読み込んで配列に変換、さらにリストに変換して画面表示する。--> <?php if(isset($_POST["submit"])){ $num_arr = array(); $content = file("kadai_2_4.txt"); foreach ($content as $list) : //リストは送信ファイル一つずつ $parts = explode("|", $list); //partsは送信ファイルの各要素を配列化したもの echo $parts[0]."===<br />"; var_dump($parts[0]); echo"===<br />"; $parts0 = substr($parts[0],0,2); $parts1 = str_replace("(","",$parts0); echo $parts1; var_dump($parts1); if($strlen = ""){$parts1=1;}else{ array_push($num_arr, $parts1); var_dump($num_arr);} ?> <?php foreach ($parts as $part):?><!--ここから再度、サイトに送信ファイルを記入する--> <table><tr> <?php echo $part;?> </tr></table> <?php endforeach; ?> <?php endforeach; }?>
回答1件
あなたの回答
tips
プレビュー