アプリ版:「スタンプのみでお礼する」機能のリリースについて

HTML形式に直すには

$str=~s|\r\n|<br/>|sg;
$str=~s|\n|<br/>|sg;
$str=~s|\r|<br/>|sg;
$str=~s|\s||sg;
$str=~s|<|&lt;|g;
$str=~s|>|&gt;|g;
$str=~s|&|&amp;|g;

でいいのでしょうか?
何か抜けや誤りはないでしょうか?
\tの変換ができないのが残念ですが空白にしたつもりです

A 回答 (2件)

テストすればすぐに間違いに気付くと思うのですが、& を文字参照(&amp;)に変換するのは、他の文字参照への変換より先でなければいけません。

でないと、例えば < は &lt; に変換され、その後さらに &amp;lt; に変換されてしまいます。

また、問題があるわけではありませんが、置換オプションの s は全ての置換式で不要です。
    • good
    • 0
この回答へのお礼

ありがとうございます
順番が狂ってましたね
直しました

お礼日時:2005/01/21 18:06

順番についての質問ではないのかもしれませんが、順序が違うと意図しない変換が行われたり、行われなかったりします。



次のような順序で大丈夫だと思います。
$str=~s|&|&amp;|g; # <,>の変換の前に
$str=~s|<|&lt;|g; # <br/>への変換の前に
$str=~s|>|&gt;|g; # <br/>への変換の前に
$str=~s|\r\n|<br/>|sg;
$str=~s|\n|<br/>|sg;
$str=~s|\r|<br/>|sg;
$str=~s|\s||sg; # 改行変換の後に
    • good
    • 0
この回答へのお礼

後先考えずにただ並べただけでした
ありがとうございます

お礼日時:2005/01/21 18:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!