- ベストアンサー
フォームで受け取った文章$strを
HTML形式に直すには $str=~s|\r\n|<br/>|sg; $str=~s|\n|<br/>|sg; $str=~s|\r|<br/>|sg; $str=~s|\s| |sg; $str=~s|<|<|g; $str=~s|>|>|g; $str=~s|&|&|g; でいいのでしょうか? 何か抜けや誤りはないでしょうか? \tの変換ができないのが残念ですが空白にしたつもりです
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
テストすればすぐに間違いに気付くと思うのですが、& を文字参照(&)に変換するのは、他の文字参照への変換より先でなければいけません。でないと、例えば < は < に変換され、その後さらに &lt; に変換されてしまいます。 また、問題があるわけではありませんが、置換オプションの s は全ての置換式で不要です。
その他の回答 (1)
- steel_gray
- ベストアンサー率66% (1052/1578)
回答No.2
順番についての質問ではないのかもしれませんが、順序が違うと意図しない変換が行われたり、行われなかったりします。 次のような順序で大丈夫だと思います。 $str=~s|&|&|g; # <,>の変換の前に $str=~s|<|<|g; # <br/>への変換の前に $str=~s|>|>|g; # <br/>への変換の前に $str=~s|\r\n|<br/>|sg; $str=~s|\n|<br/>|sg; $str=~s|\r|<br/>|sg; $str=~s|\s| |sg; # 改行変換の後に
質問者
お礼
後先考えずにただ並べただけでした ありがとうございます
お礼
ありがとうございます 順番が狂ってましたね 直しました