ゴール
PHPでおそらくセキュアに文字列を出力させつつ、改行のみ許可する。
Laravel以外のフレームワーク詳しくないが、フレームワーク問わず使えるはず。
説明
前提条件 : 下記の場合、DBに文字列を保存するときに改行コードを全て<br>にしとく。
view内
echo str_replace('<br>', '<br>', htmlspecialchars( $string ,ENT_QUOTES) );
仕組みは単純で、htmlspecialcharsで$stringに入っている特殊文字をHTMLエンティティに変換する。そうすると<script>タグなどが全てエスケープされる。
しかし、それだとセキュアになる反面、改行をするための<br>タグが効かなくなる。そのため、str_replace関数を使って<br>を<br>タグに置換して、改行のみを許可する。
まとめ
Laravel使って実装していたが、良いヘルパー見つけられずに結局普通のPHPのコードになってしまった。とはいえ、生のPHPだからViewで使えばCakePHPだろうとCodeigniterだろうと使えるはずですよね。( 使えなかったらすみません...。 )