* func.phpのfunction page_listについて [#c1207236] - ページ: [[BugTrack2]] - 投稿者: 名無しさん - 優先順位: 低 - 状態: 完了 - カテゴリー: その他 - 投稿日: 2007-03-31 (土) 13:53:40 - バージョン: ** メッセージ [#re7b55f0] func.phpの // Create list of pages function page_list($pages, $cmd = 'read', $withfilename = FALSE) { で始まる部分のなかに // WARNING: Japanese code hard-wired if($pagereading_enable) { if(mb_ereg('^([A-Za-z])', mb_convert_kana($page, 'a'), $matches)) { $head = $matches[1]; } elseif (isset($readings[$page]) && mb_ereg('^([ァ-ヶ])', $readings[$page], $matches)) { // here $head = $matches[1]; } elseif (mb_ereg('^[ -~]|[^ぁ-ん亜-熙]', $page)) { // and here $head = $symbol; } else { $head = $other; } } else { $head = (preg_match('/^([A-Za-z])/', $page, $matches)) ? $matches[1] : (preg_match('/^([ -~])/', $page, $matches) ? $symbol : $other); } という内容がありますよね。~ で、後半部分にある $head = (preg_match('/^([A-Za-z])/', $page, $matches)) ? $matches[1] : (preg_match('/^([ -~])/', $page, $matches) ? $symbol : $other); の2回目の分岐条件が、 (preg_match('/^([ -~])/', $page, $matches) ? となっているのはなぜなのでしょうか?~ この部分以降 $matches を使っていないので、 (preg_match('/^([ -~])/', $page) ? でもいいような気がするのですが?~ それともうひとつ。~ 繰り返し処理の中にあるので、 preg_match('/^([A-Za-z])/S', $page, $matches) として高速化を図ることはできないのでしょうか?~ ~この部分だけでは、処理速度の改善にはつながらないかもですし、ページ(の検索結果)を一覧する数しだいでは逆効果になるかもしれないですが。~ 素人目線な気がしますが、提示しておきます。 -------- - コメントありがとうございます :) preg_match() の部分はご指摘の通り(不要)だと思います。 -- [[henoheno]] &new{2007-04-01 (日) 21:04:13}; -- [[cvs:lib/func.php]] (r1.86) - [[正規表現の 'S' オプション>http://jp2.php.net/manual/ja/reference.pcre.pattern.modifiers.php]]については、意味を取り違えられていると思います。これは正規表現の分析により時間をかけることで、''パターンマッチにかかる時間''の短縮を図るためのものなので、正規表現が単純すぎる場合や、その正規表現関数が扱うデータの量(パターンマッチの対象)が少ない場合は効果が出辛いと思います(( = 正規表現が複雑である部分では、効果があるだろうと思います))。念のためdevのデータを対象にしてテストしてみましたが、意味のある違いは見られませんでした。 -- [[henoheno]] &new{2007-04-01 (日) 21:06:34}; - 回答ありがとうございます。phpを学び始めたばかりなので、細かい部分の理解が足りなかったようです。 -- &new{2007-04-03 (火) 18:45:29}; #comment //#comment