やりたいことは、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ランキング
-
何故、日本は未だに数字を3桁...
-
CSVファイルの中で、「 , 」カ...
-
ひとつの命令を複数行に記述
-
マクロを使ってフォルダー内に...
-
テキストファイル内の「誤改行...
-
delphiで数値をカンマ区切りの...
-
Excel 住所の分割(文字数制限...
-
VBAでtxtファイルを読み込む際...
-
データにカンマが入ったCSVデー...
-
3桁ごと?4桁ごと?コンマの...
-
何故、日本は未だに数字を3桁...
-
JPY ¥1,500.00は日本円でお幾ら?
-
エクセルで数値を全角文字(カ...
-
カンマ区切りの数字をCSVフ...
-
VBScript 日付の比較について
-
英数字のみ全角から半角に変換
-
全角英数字の必要性が理解できない
-
パイソンエラーについて
-
Accessで日付や数値を全角で表...
-
Perlでのメール本文の解析について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
マクロを使ってフォルダー内に...
-
カンマ区切りの数字をCSVフ...
-
データにカンマが入ったCSVデー...
-
カンマ区切り
-
WORDで改ページすると時々グレ...
-
CSVの定義
-
C#で、テキストボックスの入力...
-
3桁ごと?4桁ごと?コンマの...
-
[VBA][Excel]クリップボードか...
-
何故、日本は未だに数字を3桁...
-
PHP カンマをエスケープしたい...
-
ひとつの命令を複数行に記述
-
「カンマ」と「コンマ」は同じ...
-
VB2005のTextBoxでカン...
-
JPY ¥1,500.00は日本円でお幾ら?
-
パス区切りの文字について
-
メッセージボックスの数字をカ...
おすすめ情報