ページ名が「0」のとき、単語検索の挙動がおかしい

  • ページ: BugTrack2
  • 投稿者: 名無しさん
  • 優先順位: 低
  • 状態: 完了
  • カテゴリー: 本体バグ
  • 投稿日: 2007-05-04 (金) 21:42:18
  • バージョン:

メッセージ

ページ名が半角の0だと、単語検索で次のようなことが起こります。

  • キーワードがソース内にあっても、ヒットしません。(ただし、キーワードとページ名が同じ時はヒットします)
  • $show_passage を1 にしている時、表示されるpassage が異常
    例
    一覧表示のとき:0 (18m)
    0をキーワードにして検索したとき:0 (13637d)
    他のページは問題なく表示されています。

1.4のお試しサイトでも、同じことが起こることを確認しました。
消されてなければ、すぐに試せると思います。


  • BugTrack2/179 にある
    PHPの配列のキーに「整数として解釈できる文字列」を与えた場合、それは整数になります。
    これはPHP言語における配列の仕様のようです。
    の内容が、今回の原因みたいです。
    ひとまずの解決法を掲示します。
    // $Id: func.php,v 1.87 2007/04/01 11:55:43 henoheno Exp $
    (中略)
    // 'Search' main function
    function do_search($word, $type = 'AND', $non_format = FALSE, $base = '')
    {
    (中略)
    		// Search for page contents
    		foreach ($keys as $key) {
    -			$b_match = preg_match($key, get_source($page, TRUE, TRUE));
    +			$b_match = preg_match($key, get_source("$page", TRUE, TRUE));
    			if ($b_type xor $b_match) break; // OR
    		}
    		if ($b_match) continue;
    (中略)
    	$retval = '<ul>' . "\n";
    	foreach (array_keys($pages) as $page) {
    		$r_page  = rawurlencode($page);
    		$s_page  = htmlspecialchars($page);
    -		$passage = $show_passage ? ' ' . get_passage(get_filetime($page)) : '';
    +		$passage = $show_passage ? ' ' . get_passage(get_filetime("$page")) : '';
    (以降、省略)
    spam対策が一段落したら、チェックをお願いします。 -- 2007-05-12 (土) 15:21:29
  • ヒントをありがとうございます :) この件、回りまわって、encode() にstrval()がないのが原因のように見えます。bin2hex()が文字列型を要求しているのに、それ以外を与える隙があります。encode()を呼んでいる全ての関数において同様の症状が起こる可能性がこれで無くなるはずです。 -- henoheno 2007-05-12 (土) 16:40:38
  • こちらの件の解決を、cvs:lib/func.php (1.90) で確認しました。下の件も(たぶん)終わったと思うので、完了にします。ありがとうございました。 -- 2007-05-13 (日) 16:54:58

sort() 系関数のオプションを規定していないために、int型に変換されたページ名が適切に並ばない件

sort() 系関数のオプションで SORT_STRING, SORT_NUMERIC を指定できるタイプのものは、意図に応じて適切に付けましょう

文字列の比較ねた

  • BugTrack2/236 If you compare two numerical strings, they are compared as integers -- 2007-05-18 (金) 02:33:23

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

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.208 sec.

OSDN