* 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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.208 sec.

SourceForge