文字列のパターン検索におけるバグ
[上に]
[前に]
[次に]
miyu
[E-Mail]
2000/02/10(木) 21:46:06
Perlを使ったCGIプログラムで,あるデータベースファイルにある
文字列を検索するプログラムを書いています.検索キーワードを
指定すると,該当する文字列を表示し,その文字を赤太字に強調します.
プログラムができて,動作確認のため「1(全角)」をキーワードに
指定すると,太字部分が文字化けしてしまいました.調べてみると,
それは「撮影」という文字で,さらに句点コードを調べてみると,
1:0317
撮:2703
影:1738
ということで,撮影27[0317]38というパターンで「1」と認識
するようです.これを回避するにはどうしたらよいのでしょうか?
ちなみに,プログラムはShift-JISでかいていますが,文字列の
入る変数は,jcode.plでEUCコードに変換しています.
具体的には,
$key を検索キーワード,$logをファイルから読み出した文字列とすると,
(あらかじめ&jcode'convert( *k, 'euc' );で変換済み
if( $logs =~ m#$key# ){ #検索文字列が含まれていたら
$logs =~ s/$key/<FONT COLOR=\"FF0000\"><B>$key<\/B><\/FONT>/g;
}
のようにしています.そのあと,CGIとして出力する際には,
Shift-JISコードに変換しています.
miyu
2000/02/10(木) 21:50:26
訂正です.
>$key を検索キーワード,$logをファイルから読み出した文字列とすると,
>(あらかじめ&jcode'convert( *k, 'euc' );で変換済み
>
>if( $logs =~ m#$key# ){ #検索文字列が含まれていたら
> $logs =~ s/$key/<FONT COLOR=\"FF0000\"><B>$key<\/B><\/FONT>/g;
>}
部分は,
$key を検索キーワード,$logsをファイルから読み出した文字列とすると,
(あらかじめ&jcode'convert( *key, 'euc' );で変換済み
if( $logs =~ m#$key# ){ #検索文字列が含まれていたら
$logs =~ s/$key/<FONT COLOR=\"FF0000\"><B>$key<\/B><\/FONT>/g;
}
ふじ
2000/02/10(木) 21:54:00
「正しくパターンマッチさせる」
http://www.din.or.jp/~ohzaki/perl.htm#JP_Match
こちらをどうぞ。
B-Cus
2000/02/10(木) 21:54:14
http://www.din.or.jp/~ohzaki/perl.htm#JP_Match
miyu
2000/02/10(木) 22:18:02
訂正です.
>$key を検索キーワード,$logをファイルから読み出した文字列とすると,
>(あらかじめ&jcode'convert( *k, 'euc' );で変換済み
>
>if( $logs =~ m#$key# ){ #検索文字列が含まれていたら
> $logs =~ s/$key/<FONT COLOR=\"FF0000\"><B>$key<\/B><\/FONT>/g;
>}
部分は,
$key を検索キーワード,$logsをファイルから読み出した文字列とすると,
(あらかじめ&jcode'convert( *key, 'euc' );で変換済み
if( $logs =~ m#$key# ){ #検索文字列が含まれていたら
$logs =~ s/$key/<FONT COLOR=\"FF0000\"><B>$key<\/B><\/FONT>/g;
}
miyu
[E-Mail]
2000/02/10(木) 22:20:18
[[解決]]
ふじさん,B-Cusさん,どうもありがとうございました.
おかげさまで,動作することができました.
お二方ともご紹介くださったページには,他にも
有用な記述が豊富だったので,さっそくBookmarkにいれました.
[上に]
[前に]
[次に]