- ベストアンサー
Perlでの改行コードについて
- Perlでの改行コードについて質問があります。
- 現在、POSTで渡された<textarea>の値をポスグレに書き込み、HTML上で表示する処理を行っていますが、改行が正しく保存されません。
- 改行コードの置換を試みましたが、うまくいきません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> デフォルト文字列というのはどのよう状態のことを言うのでしょうか? >$str = ~s/\n\r/<br>/g; あ、これこれ、これのことです。 正規表現自体は問題なさそうだったのですが、どの文字列(変数)をどこに入れているか、を知りたかったのです。 おそらく、POSTデータを$strに入れておいて、$strのうちの\r\nを<BR>に変換する、という処理をされたいのでしょうから、上記構文になると思いますが、実際はどうされていたのでしょうか?(ちょっと文章からは読み取れなくって・・・すみません) あれ?改行(CRLF)って\r\nですよね? \n\rだとヒットしないかも・・・?
その他の回答 (1)
- kenken_ken
- ベストアンサー率33% (20/59)
> DBには > 「あいうえおかきくけこ > さしすせそ」 > と登録され > > 表示では「あいうえおかきくけこさしすせそ」と表示されます。 DB上は「あいうえおかきくけこ\r\nさしすせそ」と登録されていて、それをHTMLで表示させると\r\nは(表示されないので)無視されているということではないでしょうか。 CRLFを<BR>に変換する正規表現のところは文法的には間違っていないようですが、ご質問の内容だけではデフォルト文字列がどう扱われているかわからないので・・・。そのあたりを見直してみてはいかがですか?
補足
お早い回答ありがとうございました。 デフォルト文字列というのはどのよう状態のことを言うのでしょうか? POSTで値が渡って受け取るときは CGI.pmのparamを使って取得しています。 それ以外はINSERTするときに「¥」とかをエスケープする処理だけをしています。 置換する時にbinmodeを使用して $str = "あいうえおかきくけこ さしすせそ"; binmode($str); の方がいのでしょうか? $str = ~s/\n\r/<br>/g; みたいな感じになるんでしょうか? んーわからなくなってきました。 よろしくお願いします。
お礼
解答ありがとうございます。 あ、ホントだ。そこは補足時のミスです。 先ほど自己解決はいたしまして。 完全なこちらのミスで置換部分は関数にしていたのですが そこにreturnが抜けておりました。 該当個所をすべてコピペしておけばよかったですね。 ちょー初歩的なミスにお付き合い、いただきありがとうございました。