検索で対象ワードが0 になった場合も、get_existpages() している

メッセージ

SPAM 対策になるかどうかもあやしいような提案ですが。

do_search() に送られた検索語句が半角スペースばかり*1の場合、

	$keys = get_search_words(preg_split('/\s+/', $word, -1, PREG_SPLIT_NO_EMPTY));

で$key にはarray() がセットされます。
しかし、そのような場合でも全ページの一覧を得ています。(foreach ($keys as $key) の内側でget_source() しているので、さらに全ページのソースを得るというような無駄な事は、していないようですが)

無駄といえば無駄な処理なので、

	if (empty($keys)) {
		$pages = array();
	} else {
		$pages = get_existpages();
	}

のようにしてしまうというのはどうでしょう?(if ($non_format) return array_keys($pages); の手前までelse 部分に入れてしまう方が、いいような気も・・・)



同じマッチパターンを使用して検索する場合がある

修正パッチ

    $keys = get_search_words(preg_split('/\s+/', $word, -1, PREG_SPLIT_NO_EMPTY));
+    if ( empty($keys) )
+        return str_replace('$1', '', $_msg_notfoundresult);


*1 search プラグインが除外するのは空文字だけなので、そうなる可能性もある

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-02-16 (日) 00:06:33
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u10. HTML convert time: 0.208 sec.

OSDN