文字を置き換えるには?

[上に] [前に] [次に]
さっち 1999/06/24(木) 13:35:03
こんにちは!
フォームからデータを読み込んでファイルに保存するときに、
タグ入力に関しての文字の置き換えはしているのですが、他に
これだけは置き換えしておいた方が良い、しなくてはダメ!と
いうような文字はありますか?

*以下の処理はしてあります。
        $text =~ s/&/&/g;
        $text =~ s/</&lt;/g;
        $text =~ s/>/&gt;/g;

じぇい 1999/06/24(木) 14:13:05
ケースバイケースです。

例えば保存の際にそれぞれのデータをコンマで区切っていたとすると、保存するデータの中にコンマが含まれていては都合が悪いので,

$text =~ s/,/&#44;/g;

という処理が必要になります。

さっち 1999/06/24(木) 14:15:42
じぇいさん、ありがとうございます。
普通の文字もそうなんですが、特殊文字などは気にしなくても
良いのでしょうか?

じぇい 1999/06/24(木) 14:41:10
特殊文字というのがどういう文字のことを言っているのかはわかりませんが、気にしなくて大丈夫だと思います。

さっち 1999/06/24(木) 14:48:48
もう一つ教えて下さい!
とほほさんのプログラムに記述されている
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;

$value =~ s/&/&amp;/g;
$value =~ s/</&lt;/g;
$value =~ s/>/&gt;/g;
$value =~ s/\r\n/\n/g;
$value =~ s/\s+$//;
は、何をしているのですか?

ワイ(;´Д`) 1999/06/24(木) 14:59:46
1行目で+をスペースに、2行目で%xxをxxが示すコードの文字に直してます。このへんは誰が作っても同じ感じになりますよん。きっと。
4〜6行目ではHTMLタグを無効化します。
7行目は…改行コードの統一?自信なし。
8行目は、本文後についている余計な改行とか半角スペースとかを取り去ってます。

ふじ 1999/06/24(木) 15:00:11
まず、
http://www.tohoho-web.com/wwwcgi3.htm#CgiEncode
これを読んで下さいな。

>$value =~ s/\r\n/\n/g;
Windows環境から送られてきたデータは改行コードが\r\nになっていることがあるので、
それをUNIXの改行コードである \n に変換。

>$value =~ s/\s+$//;
行末の連続した空白文字を削除。

さっち 1999/06/24(木) 15:12:07
ワイ(?)さん、ふじさん、ありがとうございます。
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
の2行ってもしかして、cgi-lib.plの&ReadParseを使うと自動的に
やってくれているのでしょうか?
もし、そうなら必要なのは最後の5行になりますよね?

ふじ 1999/06/24(木) 15:16:11
>cgi-lib.plの&ReadParseを使うと自動的にやってくれているのでしょうか?
やってくれます。

さっち 1999/06/24(木) 15:32:55
[[解決]]
じぇいさん、わいさん、ふじさん
どうもありがとうございました。
いつもみなさんに教えていただいて、いろいろ勉強になります。
また、よろしくお願いします。

[上に] [前に] [次に]