こんな質問で恐縮です・・・
ユーザーが入力した内容を、htmlspecialcharsをかけてmysqlに登録しています。
(ここは既に運用しているため、変更が難しいです・・)
登録内容をCSVに吐き出しているのですが、
「シングルコーテーション」や「&」など、住所や名前に使われそうな文字も変換されてしまっているため、
htmlspecialchars_decodeを通してCSVに出力しましたが、
「&」「<」「>」は元に戻りましたが、「シングルコーテーション」は「'」のままになってしまいます…
どうすれば、シングルコーテーションも戻せるかアドバイスいただけますと幸いです。
・・・str_replaceで置換した方がよいでしょうか…
以下、状況です。
■フォームで本当に記述した内容
名前: テスト名前's test&IT 住所: 東京都&葛飾区's マンション<span style="color: red;">あああああ</span>
↓
■mysqlに登録されている内容
名前: テスト名前's test&IT 住所: 東京都&葛飾区's マンション<span style="color: red;">あああああ</span&
■CSVを出力する際のコード
<?php if(connect_db()) { $sql = "SELECT * FROM {$dbname}.spot_orders"; $stmt = $dbh->prepare($sql); $stmt->execute(); $records = $stmt->fetchAll(); } $data = []; $i = 0; $data[$i] = [ //ヘッダーをセット "名前", "カナ", "Email", "電話番号", "郵便番号", "住所", ]; foreach($records as $record) { $i++; $data[$i][] = htmlspecialchars_decode($record["name"]); $data[$i][] = $record["name_kana"]; $data[$i][] = $record["email"]; $data[$i][] = '="' . $record["phone"] . '"'; $data[$i][] = '="' . $record["zip_code"] . '"'; $data[$i][] = htmlspecialchars_decode($record["address"]); } download_csv("order.csv", $data); //CSV出力用の関数
↓
CSVに記載されるテキスト
名前: テスト名前's test&IT 住所: 東京都&葛飾区's マンション<span style="color: red;">あああああ</span>
名前→&は入力したものに戻っているが、シングルコーテーションは戻っていない
住所→&とhtmlタグは入力したものに戻っているが、シングルコーテーションは戻っていない
何卒、よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/16 13:38