
phpで、DBから取得した「Hello!! \n World!!!」という文字列を表示したところ。
「Hello!! \n World!!!」とそのまま表示されました。
いろいろ調べた結果、
$a = 'Hello!! \n World!!!';
echo nl2br($a);
とシングルクォーテーションで文字列を囲った場合と同じことになっているとわかりました。
しかし、DBから取得して$aに突っ込むまでの作業はFuelPHPというフレームワークでやっており、
じゃあダブルクォーテーションで囲っちゃえばいいじゃん、とはいかないのかなと思います。
私が考えているやれることは、
1.FuelPHPのcoreの部分を修正する
2.nl2br($a)をnl2br(str_replace('\n',"\n",$a))のように一手間加える
なのですが、気持ちがよくはありません。
もしかすると、
・FuelPHPのconfigの問題
・PHPやapache、DB(MySql)はたまたOSの何らかの設定の問題
なのかな、とは思いますが検討もつかない状況です。
誰か解決策をお持ちの方はいますでしょうか?
因みに、Webサーバーの環境は以下の通りです。
Windows7 HomePremium
apache 2.2.21
php 5.3.8
fuelPHP 1.1
MySql 5.5(文字セットはutf-8)
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>ちなみに、「文字列として変換しないように」とはどういうことでしょうか?
\nと可視化できているということはデータをテーブルに投入するときに
\n(改行マーク)を'\n'という文字列に置き換えるような処理が
入っているはずです。(もしくは\nと手で書いているはずです)
極端なはなし
INSERT INTO hoge(data) values('Hello!!
World!!');
のように改行は改行のままで流し込んでやればいいでしょう。
No.1
- 回答日時:
>DBから取得した「Hello!! \n World!!!」という文字列
DBから取り出した時点で'\n'になっているのですから
>nl2br($a)をnl2br(str_replace('\n',"\n",$a))のように一手間加える
が必要最小限の処理で、むしろ気持ちいい処理だと思いますが?
検討すべきはDBに投入する時点で文字列として変換しないようにすることです。
この回答への補足
私の中の迷いを記述し忘れていました。
>>nl2br($a)をnl2br(str_replace('\n',"\n",$a))のように一手間加える
>が必要最小限の処理で、むしろ気持ちいい処理だと思いますが?
確かにこれでいいといえばいいのですが、
google先生にたずねても、参考にした「FuelPHP入門」という本にもそのような一手間は書かれていませんでした。
ですので、何かのバージョンの違いやコンフィグの内容の相違があるのではないか、と考えました。
一手間加えるのは簡単なのですが、そもそもその必要がないのでは?ということです。
ちなみに、「文字列として変換しないように」とはどういうことでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- 大学受験 大学受験の参考書について 高3の私文志望(今のところ中堅私立大)です。 基礎固めをしたいです。 持っ 3 2023/08/17 13:47
- その他(形式科学) 数学1の問題が分かりません 2 2022/06/11 15:13
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字列の置換をCStringで(C++)
-
mcryptで英数字(12未満)のみに...
-
正規表現
-
PHPでjavascriptを書き出すとき...
-
c# string型の変数に、ダブルク...
-
入力文字に\\マークが入ってい...
-
VB.NET 文字コード
-
PHPで文字列の照合
-
ダブルコーテーション(
-
独自タグに囲まれた文字列の変換
-
マクロ関数 #define の効果は何...
-
PHP VS Java (パフォーマン...
-
VBSで"をエスケープする文字は?
-
不規則なaタグのスクレイピング...
-
○分から○時間○分に変換
-
誤字脱字はご了承ください^^
-
sedでの最短一致の書き方
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
Excel関数「COUNTIF」で”文字”...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルコーテーション(
-
文字列の置換をCStringで(C++)
-
VBSで"をエスケープする文字は?
-
○分から○時間○分に変換
-
php 正規表現で、\\マークを取...
-
ダブルクォーテーションが置換...
-
入力文字に\\マークが入ってい...
-
mcryptで英数字(12未満)のみに...
-
$text = "
-
正規表現で<BR>の行を除外した...
-
文字列のアスタリスク置換
-
マクロ関数 #define の効果は何...
-
c# string型の変数に、ダブルク...
-
文字列の括弧について(初心者)
-
dirnameでパスが正しく取れない...
-
PHPで任意の数の行抽出
-
不規則なaタグのスクレイピング...
-
誤字脱字はご了承ください^^
-
キーワードをハイライトさせた...
-
近似した文字列を置換するエク...
おすすめ情報