2008-06-10 (3/3page)
perl フォームからの検索語のチェック「|」
perlで製作していますが、複数語句を入力した時に、正規表現で|(パイプ)を使い
$s =~ /a|b|c/ とし a、b、cどれかにマッチするようにしていますが、
この時にフォームに正規表現で
アリミノ|トリートメント とか入力されるとそれぞれアリミノ、トリートメントに該当するのがリストアップされますが、これが
アリミノ | トリートメント とスペースも入力されると次の語句のマークアップでとんでも無いことがおきました。
借りているサーバーは共用ですから他の人の迷惑になりますのであちこちクグリましたが、
対応策が見つからず、
結局フォームからURIエンコードされてくるデータを分解時に
length(フォームデータ)<=3 で 3バイト以下を全部削除するようにして解決です。
sjisで書いていますから、
&jcode'convert(*look_up_and,'euc')
一端eucに変換してマッチングと置換えは行い又、
sjisに戻して表示しています。
下記のサイトはすごくためになります。
Perlメモ
"$ascii = '[\x00-\x7F]'; $twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]'; $threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]'; if ($str =~ /^(?:$ascii|$twoBytes|$threeBytes)*?(?:$pattern)/) { print 'マッチした\n'; }"


完全予約制ヘアサロン
あのプランドが最大
phpを5.2.5にverupしたら
Apache confに書き込まれるのは、下記のままのdefaultで動く
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "C:/PHP/"
LoadModule php5_module "C:/PHP/php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL