jcode.pl
今日自分のサイトのBBSのスクリプトを修正してた。
自分のサイトのBBSといっても1から作った物ではなく
CJ-ClubさんのCBBSを改造したもの
perl自体嫌いな方の言語なので放置プレイだったのだが
修正が必要になった&今回の修正無駄に時間かかってしまったのでメモ代わりに書いておく。
今回作ってた物は、スパム対策フィルタ。
まぁ、簡単に言うと禁止ワードがあったらエラーを返すやつ
時間かかったのはjcode.plによる文字列変換でちょっとはまったから。
まぁperlでマトモニ何か書くの初めてだから仕方ないよね・・・
内容はこんな感じ。
$str = 'ABC'; jcode::tr( \$str, '0-9A-Za-z ', '0-9A-Za-z ' );
こんな感じで投げて
期待値としてはABCだった。
しかし戻ってきたのはまったくの別物だった
まぁファイルがSJISだったてーのと
trの中に書いてある'0-9A-Za-z 'がSJISなのが原因らしい
自動で文字コードの統一してくれたらいいのに・・・
で、変更したのがこれ
$str = 'ABC'; $trStr = '0-9A-Za-z '; jcode::convert(\$trStr,'euc'); jcode::convert(\$str,'euc'); jcode::tr( \$str, $trStr, '0-9A-Za-z ' ); jcode::convert(\$str,'sjis');
やっと期待する結果が返ってきた。