
やりたいことは、PHPでPOSTされた複数のデータを結合して、MySQLの一つのカラムに収めたいと思います。例えば、3つのフォームよりPOSTされてきたデータをカンマ区切りで結合して、それらをデータベースに登録し、読み込むときは、逆にカンマ区切りでexplode()で配列に分割したいと思います。
例えば、下記のように簡単なサンプルで表現していますが、POSTされてきた3つの変数データは英単語又は、フレーズが格納されており、ときどき、カンマを含むフレーズがある場合があります。この場合、カンマ区切りで結合することはできるのですが、分割したときに、英語フレーズに含まれるカンマでも分割されてしまいます。こういう場合、カンマのエスケープはどのようにやるのが適切でしょうか?
//$_POSTの中身
//$_POST['a'] = "Sunday";
//$_POST['b'] = "Monday";
//$_POST['c'] = "He is a teacher,isn't he?";
$text = $_POST['a'].",".$_POST['b'].",". $_POST['c'].","; //カンマで区切って結合
echo $text;
$text =explode(',',$text); //カンマで分割
print_r($text);
/*$textの出力結果 2と3に分割されてしまう。
array
(
[0] => Sunday
[1] => Monday
[2] => He is a teacher
[3] => isn't he?
[4] =>
)
*/
No.1ベストアンサー
- 回答日時:
3つの方針が考えられます
(1) 「カンマ区切りをexplodeで」というのをやめて、別の書式を使う
・CSVで使われている「ダブルクオートで囲む」を使って
"Sunday","Monday","He is a teacher,isn't he?"
で保存→読み出したらCSV用ライブラリで分割
・元のデータに絶対に含まれない文字を区切りに使う。
・http://php.net/manual/ja/function.serialize.php
・http://php.net/manual/ja/function.json-encode.php
等
(2) データ中のカンマを別の文字列に変換→読み出し時に explode後に逆変換
・http://php.net/manual/ja/function.urlencode.php
等
(3)そもそも「一つの列に納める」というテーブル設計自体を見直す
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaのCSVデータ読込についてです 6 2022/07/02 10:58
- Excel(エクセル) Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい 3 2022/04/11 13:53
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Excel(エクセル) 数字にカンマを入れる方法 2 2022/04/12 11:52
- 英語 英語について質問です He was born in Okinawa, he doesn’t like 5 2022/12/01 21:06
- 高校 高校英語の、関係副詞のカンマありとカンマなしの判断の方法が分からないのですが何かわかりやすい方法はあ 1 2022/08/08 20:43
- 英語 英語の分詞構文の問題についてです。 When Zachary saw me ,He stood up 2 2022/12/12 12:37
- Java コンソールから所属財産を入力(単位:万円 1000~100000以内でIntegerに変換できない場 2 2022/05/31 21:32
- システム メールのcsv添付ファイルの種類を テキスト形式からカンマ区切り形式に 変更する方法はありますか? 4 2023/03/09 20:33
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
CSVの定義
-
テキストに’の入っているデータ...
-
SUM関数を利用すると自動的に桁...
-
【VBA】エクセルで値のみクリッ...
-
EXCELの文字が指数になる
-
[C#.NET]DataSetにタブ区切りの...
-
[VBA][Excel]クリップボードか...
-
エクセルにペーストする際にカ...
-
マクロを使ってフォルダー内に...
-
何故、日本は未だに数字を3桁...
-
C#でcsvファイルの列を入れ替え...
-
VB2005のTextBoxでカン...
-
ひとつの命令を複数行に記述
-
VBScript 日付の比較について
-
エクセルの区切り位置の設定方法
-
1つのセルに1つ以上のデータ...
-
エクセルの関数カンマ区切りの...
-
JPY ¥1,500.00は日本円でお幾ら?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
マクロを使ってフォルダー内に...
-
EXCELからCSVにすると余計なカ...
-
Excelについて質問です。 セル...
-
CSVの定義
-
[VBA][Excel]クリップボードか...
-
WORDで改ページすると時々グレ...
-
カンマ区切りの数字をCSVフ...
-
C#で、テキストボックスの入力...
-
データにカンマが入ったCSVデー...
-
VBAでtxtファイルを読み込む際...
-
カンマ区切り
-
VB2005のTextBoxでカン...
-
メモ帳からエクセルにセル区切...
-
JPY ¥1,500.00は日本円でお幾ら?
-
テキストファイルからReadLine...
-
カンマ区切りでないテキストをc...
-
エクセルにペーストする際にカ...
-
パス区切りの文字について
おすすめ情報