ネタバレや腐臭発言が混じるらくがきメモ
全カテゴリ表示
ドラクエ
三国志
アンジェ
ワンピース
nicky
その他
■
2008年11月10日(月) nickyの日記内検索
CGIファイルって一回開けるとまた何やらやりたくなりますよね…やってました。
nickyの日記内検索でand検索とor検索ができるようにしてみた。なってるんじゃないかな。なってるといいな。またもcgiを直接書き換えてるので危険です(今度はnicky.cgi。ver.2008/07/09)
「検索」という項目にある「sub NickySerch」をこんなふうにした。
長いのでたたみます
sub NickySerch{
my($aaa, $gomi, $fn, $fname, $gfn);
my($find, $startno);
my($pageno, $flaglog);
my($cnt);
$ModeSub=16;
$Mode="MONTH";
#ヘッダを出力
&nickyGetHead();
if( $UseSearchHD eq "Yes" ){
print &put_macro($head2nd);
}else{
print &put_macro($head);
}
print "$br検索キーワード『$SerchWord』$br\n";
$SerchWord=~s/\"/\\\"/g;
$SerchWord=~s/\'/\\\'/g;
$SerchWord=~s/\`/\\\`/g;
$SerchWord=~s/\\/\\\\/g;
$SerchWord=~s/\|/\\\|/g;
$SerchWord=~s/\?/\\\?/g;
$SerchWord=~s/\//\\\//g;
$SerchWord=~s/\-/\\\-/g;
$SerchWord=~s/\*/\\\*/g;
$SerchWord=~s/\=/\\\=/g;
$SerchWord=~s/\&/\\\&/g;
$SerchWord=~s/\,/\\\,/g;
$SerchWord=~s/\(/\\\(/g;
$SerchWord=~s/\)/\\\)/g;
$SerchWord=~s/ / /g;
$SerchWord=~tr/ / /s;
$SerchWord=~s/^ //;
$SerchWord=~s/ $//;
$SerchWord=~s/ (or|OR|or|OR) /\|/g;
@nli=&GetNickyList("r") if( !@nli );
SLABEL:for $gfn(@nli){
$NickyFname="$vDir/$$gfn[0]";
&GetDateFromFname();
&GetNickyFile($NickyFname);
next if( !$Title && !$Message );
$msg=$SerchWord;
$Tmessage = $Title.$Message;
$Tmessage =~ s/<[^>]*>//g;
@SWord = split(/ /, $SerchWord);
$cword = @SWord;
for($i = 0; $i<$cword; $i++){
next SLABEL if($Tmessage !~ /$SWord[$i]/);
}
&PutNickyOneDay();
print "$br";
}
&NickyReturn();
if( $UseSearchFT eq "Yes" ){
print &put_macro($foot2nd);
}else{
print &put_macro($foot);
}
}
ほんとに長い…。実際に変わってるのは10行くらいのはずですが。「日付から曜日を取得」の直前の行までです。
スペースを挟むとand検索で、「いっこめ or にこめ」みたいにやるとor検索。半角全角大文字小文字は区別しちゃいます。
しょっちゅう過去の日記にリンク貼るから日記内検索は自分でよく使うんですが、無意識に検索ワードを2つ入れてしまったりするのでand検索が欲しかったんです。
or検索は「or」を「|」に置換すればいいのよね、ふふ簡単簡単。じゃあand検索はスペースを&に置換すればいいのよね、やったーできあがりー! と思ったら全然できあがりじゃなかった。なんでできないんだろうと思ってgoogle先生に聞きに行ったら、同じような疑問を持った人が質問掲示板で質問してて、くわしい人たちが「言っている意味がよく分かりません」みたいな感じに答えてたのでなんか恥ずかしかったです!
追記。デフォルトだと検索結果は古い方が上ですが、これだと新しい方が上になっちゃいます。上のだと
@nli=&GetNickyList("r") if( !@nli );
という行がありますがこれを
@nli=&GetNickyList("tr") if( !@nli );
にすれば古い方が上になるはず
<< nickyの日記内検索。追記
|
TOP
|
nicky改造日記。RSS全文配信編 >>
>>>
2017年
05月
06月
2015年
03月
08月
2011年
01月
02月
07月
2010年
01月
02月
03月
04月
05月
06月
07月
12月
2009年
01月
02月
03月
04月
05月
06月
07月
08月
12月
2008年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2007年
01月
02月
03月
04月
09月
12月
2006年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2005年
11月
12月
月別ログ
元に戻す
日記内検索機能
RSS
PaintBBS / spainter
Shi-dow
Diary CGI
Nicky!
+
rssnicky