& を含む文字列の処理問題
読了まで:約3分
blosxom の&
と
Wiki や
ちなみに
何が問題か
いったい
プログラムコードの内容が変わってしまう ということが起きます。
例えば
my $str = '&の問題';
$str =~ s/&/&/g;
しかし、
my $str = '&の問題';
$str =~ s/&/&/g;
のようになってしまいます。
なにが&
&
に
何故こんなことが起きるのか
上記の
# 例1
my $str = '&を含む<文字列>';
$str =~ s/&/&/g; # & => &
$str =~ s/&/&/g; # & => &
$str =~ s/&(\w+);/&$1;/g; # &gt; => >
$str =~ s/&#(\d+);/&#$1;/g; # &#26; => 
$str =~ s/&#x( [[a-f0-9]] +);/&#x$1;/ig; # &#x2f => /
# $str = '&を含む <文字列> ' となる。
上記の&
と&amp;
と&
を&
と
が、
あちらが立てばこちらが立たず
じゃあ、
そうするには、
# 例2
my $str = '&を含む<文字列>';
$str =~ s/&/&/g; # & => &
# $str = '&を含む&lt;文字列&gt;' となる。
こんな
& を含む文字列、一般実体参照 と 数字文字参照 をどう表示したいのか
問題は
プログラムコードで
解決策の例
プログラムコードに
どう&
は&amp;
に&
\`` でエスケープする と言う感じになってます。要は、
&と書くと
&` が
ただ、
最後に
文章がおかしい とか _ わかりづらい_ とか _ ここは間違っている_ とかがあったら、コメントなりトラックバックなりで指摘してください。というか自分でも若干こんがらがってます。最初なにがどうなってるのかよく分かってませんでした。今でもそうですが。
ようするに&
とかを&
とかを
おまけ
そう
あと