• 締切済み

mySQLのデータベースにhtmlのコードをそのまま保存することはできますか?

mySQLのデータベースにhtmlのコードを保存させて、ブログのように管理したいと考えています。けれど、微妙に元のコードが変形してしまって困っています。 フォームを作って、そこに <p style="font-size:18pt;">aiueo</p> このように入力して、そのまんまの形でデータベースに保存させたいのですが、 <p style=\"font-size:18pt;\">aiueo</p> このようにクォーテーションマークの前にバックスラッシュが挿入されてしまいます。 これが原因で、CSSなどが機能せず困っています。誰か分かる方いますでしょうか?ブログなどはどうやっているのでしょうか? 助けてください。ヒントになるソースなどでも教えていただけると助かります。 作業環境は、 データベース mySQL サーバー言語 php, ZendFramework それから、フォームの送信時にjavascript(jQuery Form)を媒介させて入力チェックなどを行っています。 windowsXP

みんなの回答

回答No.1

こんにちは。具体的な解決策ではないのですが、参考になればと思い回答させていただきます。 >ブログなどはどうやっているのでしょうか? この部分の回答になりますが、一般的な手段としては、MySQLにはHTMLコードやスタイルを保存させるのではなく、実際のデータのみを登録させ、表示させる際にMySQLのデータベースからデータのみを抽出し、PHP内でHTMLやスタイルを適用させる形式になります。 このようにすることで、HTMLの特殊な処理等を省くことができるので、 後々編集等を管理ページ等で行う際に簡単です。 また、デザインの更新時などに、HTMLを変える必要性がある場合、HTMLやスタイルまで登録していたら、その全てを更新しなければならず大変な労力になると思います。 HTMLを直接データベースに入力する必要性がある場合もあるかもしれませんが、参考になれば幸いです。

metheglin
質問者

お礼

ご返信どうもありがとうございます。 なるほど、テキストデータだけを保存するのはよさそうですね。参考になります。 ですが、画像なんかもまぜあわせながらできるだけ自由度の高いブログのようにしたいと思っているので、どうしても<img src="" />のようにクォーテーションマークが必要になるかと思うのです。 javascriptでワンクッションおいてるところがあやしいと思っているんですが、難しいですね・・・。 Crystalizeさん、気にかけてくださってどうもありがとうございました。

metheglin
質問者

補足

完全な解決ではないのですが、とりあえず受け取った文字列をサーバー側で、 str_replace("\\", "", $_POST["description"]); のようにすることで、\を取り除くことに成功しました。 ただ、これでは文章中に\記号を書くことができませんが、とりあえずはこれで解決としておこうと思います。

関連するQ&A