phpのCSVの保存方法|値2にダブルコーテーションとスペースが入る理由と対処法

このQ&Aのポイント
  • phpのCSVの保存方法について教えてください。inputタグから値をphpに送信し、csvファイルに保存する方法を知りたいです。
  • csvファイルを開くと、値2にダブルコーテーションとスペースが入ってしまいます。なぜこのような現象が起こるのでしょうか?
  • ダブルコーテーションとスペースが入ってしまう場合の対処法も教えていただけると助かります。
回答を見る
  • ベストアンサー

phpのCSVの保存について教えてください

下記のようにinputタグから値をphpにおくり、csvファイルに保存しようとしています。 値1に12345 値2に67890 値3にあいうえお というように値を送って保存し、csvファイルを開くと、 12345," 67890",あいうえお というように、値2として送ったものの先頭にダブルコーテーションとスペース、最後にダブルコーテーションが勝手に入ってしまいます。なぜ何でしょうか?対処法も含め教えていただければありがたいです。よろしくお願いします。 --------------------html---------------------------------- <form action="send.php" method="post"> 値1:<input type="text" name="aaa" > 値2:<input type="text" name="bbb" > 値3:<input type="text" name="ccc" > <input type="submit" value="送信する"> </form> --------------------php---------------------------------- <?php $val[0] = $_POST['aaa']; $val[1] = $_POST['bbb']; $val[2] = $_POST['ccc']; $fp = fopen("valdata.csv", "a"); fputcsv($fp, $val); fclose($fp); ?>

  • dkong
  • お礼率86% (170/197)
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

たぶん空白入りの値が POST されているのだと思いますが。 fputcsv する前に、 $val = array_map('trim', $val); で、すべての要素に、trim を適用すれば良いように思います。

dkong
質問者

お礼

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

関連するQ&A

  • phpでのメールフォームの作成について

    HTMLで <form action="mail.php" method="post"> <input name="aaa" type="checkbox" id="aaa" value="AAA" checked> <input name="bbb" type="checkbox" id="bbb" value="BBB" checked> <input name="ccc" type="checkbox" id="ccc" value="CCC" checked> </form> として、次に進むボタンを押すとmail.phpに飛び mail.phpでは、チェックされたものだけを表示したいのですが、どうすればよいでしょうか? もし、AAAとBBBが選ばれたら あなたが選んだのは AAA、BBBです。 と表示したいです。そのあとにメールフォームを続けるつもりです。 ご教授よろしくお願いします。

    • 締切済み
    • PHP
  • PHPでフォームからの送信

    PHPでフォームからデータを送信する方法について教えてください。例えばPHPファイルの中に下の様にフォームを作成して、送信ボタンを2つ作ります。一つのボタンをクリックすると全てのフォームの情報が送信されてしまいますが、独立して送信できるようにはできないのでしょうか。簡単にでもできるかできないかを教えていただけましたら、あとは自分でなんとかがんばりますので、どなたか教えていただけれますと幸いです。宜しくお願いします。 <form action="abc.php" method="post"> AAA:<input type="text" name="simei"> BBB:<input type="password" name="pass"> <input type="submit" value="送信"> </form> <form action="abc.php" method="post"> CCC:<input type="text" name="simei"> DDD:<input type="text" name="pass"> <input type="submit" value="送信"> </form>

    • ベストアンサー
    • PHP
  • PHPのsubmitボタンが複数ある場合

    PHPのsubmitボタンが複数ある場合 PHPにて会計システムを開発しているのですが、計算ボタンと、更新してDBに追加するためのボタンとが混在している場合、 $_POST等で押されたボタンの処理を分けることは可能なのでしょうか?下の例は、 name="calculation"が押された場合は、val1とval2の値を計算し、totalへ値を入れます。 name="update"が押された場合は、それぞれのフォームの値をDBに更新をかけます。 <?php <form action="****.php" method="POST"> <input type="text" name="val1" value="20"/> <input type="text" name="val2" value="30"/> <input type="text" name="total" value="50"/> <input type="submit" name="calculation"/> <input type="submit" name="update"/> </form> ?> お分かりになる方、ご教授お願いいたします。

    • 締切済み
    • PHP
  • PHPバージョン4.3.10で動作しない

    はじめのページでチェックボックスにチェックしてもらい、 次のページでそのチェックしたものを表示したいです。 しかし、下記のコードではPHPバージョン4.3.10ではうまく動作しませんでした。 PHPバージョン4.3.10で動作させるには、どうすればよいか教えていただけませんか? <form action="mail.php" method="post"> <input name="member[]" type="checkbox" value="AAA" checked>AAA <input name="member[]" type="checkbox" value="BBB" checked>BBB <input name="member[]" type="checkbox" value="CCC" checked>CCC <input type="submit" value="send"> </form> mail.php <?PHP if(is_array($member)){ $txt ="あなたの選んだのは"; foreach ($member as $key=>$val){ if ($key==0){ $txt .=$val; }else{ $txt .="、".$val; } } $txt.="です"; }else{ $txt="あなたは誰も選んでません"; } print $txt; ?>

    • ベストアンサー
    • PHP
  • csvに中身が書き込まれない

    作成してみたものがうまく動かず、どこがおかしいのかよく分からないため、 質問させていただきます。 もともとtest.csvにはUTF-8で作成した中身があります。 ひとつ前の画面でPOST送信しているフォームがあり、 中身のデータは下記です。 <form action="kakikomi.php" method="post"> <input type="hidden" name="aaa" value="bbb,ccc,ddd"> </form> #kakikomi.php(UTF-8) $csvFileName="test.csv";$csv=array(); foreach($_POST as $val){$csv[]=explode(",",$val);} setlocale(LC_ALL,"ja_JP.UTF-8"); if( $pointer=fopen($csvFileName,"w")): foreach($csv as $line){fputcsv($pointer,$line);} fclose($pointer); //print_r($csv); else:die('メッセージ'); endif; この結果はcsvの中身は真っ白になってしまいます。 fputcsvのマニュアル例からそのまま引用したのですがどこかおかしいのでしょうか。

    • 締切済み
    • PHP
  • フォーム

    こんにちは。HTMLのフォームについて質問です。 下のようなソースで、bbbの送信ボタンを押した時にはAAAの内容とBBBの内容を、cccの送信ボタンを押した時にはAAAの内容とCCCの内容を送信する、という方法はありますでしょうか。 実際に作成しているものは、BやCの形が20件ほどあるので、AAAをBとCのフォームにそれぞれ書くというのは非常に効率が悪く、「他にもいい方法があるよ」というものでも結構ですので教えていただけたら、と思います。 <form name="formA"> <input type="text" name="AAA" /> </form> <form name="formB"> <input type="text" name="BBB" /> <input type="submit" name="bbb" /> </form> <form name="formC"> <input type="text" name="CCC" /> <input type="submit" name="ccc" /> </form>

    • ベストアンサー
    • HTML
  • ASPのRedirectの処理ついて困っています

    フリーのCGIのソフトを使用しているのですが、このCGIを呼び出す前に決められた データーをこのCGI宛にPOSTしなくてはいけません。 ASPのRedirectコマンドを使用して、Redirect先のCGIに値をPOSTする、ということ はできるのでしょうか? ***.cgi?name=aaa&flag=bbb という形でRedirectしても、残念なことにCGIの方できちんと値を受け取ってくれ ませんでした。 下記のようなFormタグをRedirect処理で自動的に値を入れてPOSTしたいのですが。。。 <form id="FormName" action="***.cgi" method="post" name="FormName"> <input type="text" name="name" value="aaa" size="24"><br> <input type="text" name="flag" value="bbb" size="24"> </form>

  • CSVファイルの「”」について

    VB6でCSVファイルを読み込みたいのですが、 以下のような項目だと、1項目として読み込むことができません。 例) AAA,"BBB,CCC,"" """,DDD "BBB,CCC,"" """ を1項目として読み込みたいのですが ダブルコーテーションの括りの中に、更にダブルコーテーションがあると うまくいかないみたいです。 何か方法がありますでしょうか? Open DownLoadFile For Input As #1 Len = 32000 Input #1, rec Do Until EOF(1) 処理1 Loop close #1

  • phpによるアンケート csvに保存

    <html> <p> </p> <Div Align="center"> <h3>アンケート</h3> <form name="form" action="log.csv" method="GET"> <div> <p> お名前を入力して下さい:<br> <input type="text" name="simei"> </p> <p> 性別を選んで下さい。<br> <input type="radio" name="gender" value="男性">男性です<br> <input type="radio" name="gender" value="女性">女性です<br> </p> <p> 好きなスポーツ: <select name="favorite_sports"> <option value="バスケットボール">バスケットボール</option><br> <option value="野球">野球</option><br> <option value="サッカー">サッカー</option><br> <option value="テニス">テニス</option><br> </select><br> <br> <p> 満足度をこたえてください<br> <input type="checkbox" name="check1" value="満足"/> 満足<br> <input type="checkbox" name="check2" value="やや満足"/>やや満足 <br> <input type="checkbox" name="check3" value="ふつう"/> 普通<br> <input type="checkbox" name="check3" value="やや不満"/> やや不満<br> <input type="checkbox" name="check3" value="不満"/> 不満<br> </p> <p> <p> <input type="submit" name="submit" value="回答"> </p> <?php if( isset( $_POST[ 'log.csv' ] ) ){ //テキストボックス「log.csv」に入力された内容を表示 print "送信された内容は{$_POST['log.csv']}です。\n"; } ?> </div> </body> </html> 回答ボタンを押すと内容をcsvに保存するアンケートを作りたいのですがcsvに全く反映されて内容で困っております。どなたか助けてほしいです

    • ベストアンサー
    • PHP
  • PHPでのクッキー

    PHPでクッキーを使い、下記のような入力フォームを作りました。 form.phpで入力→form2.phpで正常出力出来るのですが、 直接form2.phpへ飛ぶと、クッキーの値がなくなってしまいます。 setcokkieが、何の値もないのを上書きしていることは理解できるのですが、これを上書きせず回避?する方法はありますでしょうか? よろしくお願いします。 【form.php】 <?PHP parse_str($_COOKIE["city"]); parse_str($_COOKIE["city_name"]); ?> <html> <form method="post" action="form2.php"> <?PHP echo "名前1<input type=text name=name1 maxlength=16 size=12 value=$set_name1> <BR>ID<input type=text name=p1 maxlength=8 size=6 value=$set1><BR><BR>"; echo "名前2<input type=text name=name2 maxlength=16 size=12 value=$set_name2> <BR>ID<input type=text name=p2 maxlength=8 size=6 value=$set2>"; ?> <input type="submit" value="実行"> </form> </html> 【form2.php】 <?php $city1 = $_POST["p1"]; $city2 = $_POST["p2"]; $city_name1 = $_POST["name1"]; $city_name2 = $_POST["name2"]; setcookie ("city", "set1=$city1&set2=$city2",time()+3600*24*90); setcookie ("city_name", "set_name1=$city_name1&set_name2=$city_name2",time()+3600*24*90); parse_str($_COOKIE["city"]); parse_str($_COOKIE["city_name"]); echo $set_name1; echo $set1; echo $set_name2; echo $set2; ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう