tracker_list のpage から正規表現を得る部分について

メッセージ

tracker_list のテンプレート/page から正規表現を得る部分を修正して、実際に各ページの内容を得る時に、
official:WebTrack/57 で話題になったofficial:質問箱3/400 のような問題を起こらないようにしてみました。

// $Id: tracker.inc.php,v 1.36 2007/03/29 15:05:52 henoheno Exp $
// Copyright (C) 2003-2005 PukiWiki Developers Team
(中略)
class Tracker_list
{
(中略)
	function Tracker_list($page,$refer,&$config,$list)
	{
(中略)
		while (count($pattern))
		{
			$this->pattern .= preg_replace('/\s+/','\\s*','(?>\\s*'.trim(array_shift($pattern)).'\\s*)');
			if (count($pattern))
			{
				$field = array_shift($pattern);
				$this->pattern_fields[] = $field;
-				$this->pattern .= '(.*)';
+				$this->pattern .= '(.*?)';
			}
		}
(以降、省略)

これで、なるべく最短でマッチするようになるので、
テンプレート/page の形がofficial:質問箱3/400 のように複数回出てきても、最初のものだけ出力するようになるはずです。
実際のページが、テンプレート/page の形でなくなると弱いのはそのままですけど。
手のあいた時にCopyright と一緒にチェックをお願いします。



*1 既出だと気付かず、必死でデバグしてたどり着いたら同じ問題が論じられていた...。先に調べればよかった。
*2 正規表現のカッコ () によって

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-10-09 (火) 23:41:10
Site admin: PukiWiki Development Team

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

SourceForge