BugTrack/502
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* [PCRE] AutoLink用の正規表現: スペースや#記号が含まれて...
-ページ: BugTrack
-投稿者: [[morikawa]]
-優先順位: 低
-状態: 完了
-カテゴリー: 本体バグ
-投稿日: 2003-12-08 (月) 09:29:22
-バージョン:
#contents
** 修正 [#tcb7de21]
AutoLink用の正規表現について、
「正規表現の中で空白やコメント文を使用できるようにする」...
(1.4.3)
- [[cvs:func.php]](r1.57-1.58) -- 半角スペースについて別...
(1.4.8)
- [[cvs:lib/func.php]] (1.95, 1.98, 1.99) -- white space ...
** [1.4.3] ページ名が英数字で間にスペースがあると、autoli...
autolink.dat のスペースをエスケープしたらOKそうでした。
autolink.dat
...|InterWikiテクニカル|Wen Jiabao|ヘルプ|整形ルール|日...
...|InterWikiテクニカル|Wen\ Jiabao|ヘルプ|整形ルール|日...
----
-PCRE_EXTENDED(エスケープするか 文字クラスの内部にある場...
-cvsに投入しました。[[cvs:func.php]](v1.4:r1.57) func.php...
--[[v1.4:r1.57]]で、とりあえずページ名が英数字で間にスペ...
-v1.4:r1.57導入すると''「ほげ」''とか''ほげ・げほ''とかが...
-たらこせるさんと同じく、v1.4:r1.57導入で一部のページがAu...
-v1.4:r1.57での変更点(557行目)にtypoがあります。そのせ...
-$result .= str_replace(' ','\\ ',preg_quote(substr($pag...
+$result .= str_replace(' ','\\ ',preg_quote(mb_substr($...
--[[BugTrack/514]]もこれで直りました。 -- [[reimy]] &new{...
-cvsに投入しました。[[cvs:func.php]](v1.4:r1.58) -- [[ぱ...
- BugTrack2/319 ([[下>#jeddb01c]]に移動)
//#comment
----
** [1.4.8] AutoAlias 利用時に、generate_trie_regex 関数が...
AutoAlias 導入前は、ページ名に''#'' が使えないこともあっ...
しかし、[[#01>test/01]] のように((例...
generate_trie_regex 関数を
if ($index < ($i - 1)) {
// Some more keys found
// Recurse
$regex .= str_replace(array(' ','#'), array('\\ ','\\#...
generate_trie_regex($array, $index, $i, $pos + 1);
} else {
// Not found
$regex .= str_replace(array(' ','#'), array('\\ ','\\#...
preg_quote(mb_substr($array[$index], $pos), '/'));
}
として''#'' もエスケープするようにすると、正常に表示され...
--------
- 把握しました。CVSリポジトリも追いました。こちらは [[Bug...
- BugTrack2/319 よりコピーしました。&br;ところで、[[cvs:l...
-- すみません。履歴を追いかけただけで修正はこれから~、な...
- [[cvs:lib/func.php]] (1.95, 1.98, 1.99): preg_quote_ext...
+// preg_quote(), and also escape PCRE_EXTENDED-related ...
+// REFERENCE: http:// www.php.net/manual/en/reference.p...
+// NOTE: Some special whitespace characters may warned ...
+// because of mismatch-possibility between PCRE_E...
+function preg_quote_extended($string, $delimiter = NULL)
+{
+ // Escape some more chars
+ $regex_from = '/([[:space:]#])/';
+ $regex_to = '\\\\$1';
+
+ if (is_string($delimiter) && preg_match($regex_from, $...
+ $delimiter = NULL;
+ }
+
+ return preg_replace($regex_from, $regex_to, preg_quote...
+}
+
// Generate one compact regex for quick reTRIEval,
// that just matches with all $array-values.
//
@@ -647,13 +663,11 @@
if ($index < ($i - 1)) {
// Some more keys found
// Recurse
- $regex .= str_replace(' ', '\\ ', preg_quote($char, ...
+ $regex .= preg_quote_extended($char, '/') .
generate_trie_regex($array, $index, $i, $pos + 1);
} else {
// Not found
- $regex .= str_replace(' ', '\\ ',
- preg_quote(mb_substr($array[$index], $_pos), '/'));
+ $regex .= preg_quote_extended(mb_substr($array[$inde...
}
$index = $i;
}
-- 今までの経緯からすると、PCRE_EXTENDED の仕様を認識して...
-- 補足: PCRE_EXTENDED が無視する whitespace と、 [:spac...
- lib/func.php (1.100) で、特に問題はないことを確認しまし...
//#comment
*** その他: [#tb4ec63c]
- 本件に付随し、generate_trie_regex() について若干の整理...
-- [[cvs:lib/func.php]] (1.94) 関数ヘッダの整理
-- [[cvs:lib/func.php]] (1.96) 文字列の連結方法を修正 (ペ...
-- [[cvs:lib/func.php]] (1.97) 内部変数の名前をそれらしく...
-- [[cvs:lib/func.php]] (1.100) "if (mb_substr($array[$i]...
- 本件に付随し、generate_trie_regex() をもう少し観察し直...
こうなる部分は (?:1(?:0|1|2|3|4|5|6|7|8|9)|2(?:0|1|2|3|4...
本来こうできる [12][0-9]
-- そもそもこうした(木構造を正規表現に落とし込むような)機...
//#comment
終了行:
* [PCRE] AutoLink用の正規表現: スペースや#記号が含まれて...
-ページ: BugTrack
-投稿者: [[morikawa]]
-優先順位: 低
-状態: 完了
-カテゴリー: 本体バグ
-投稿日: 2003-12-08 (月) 09:29:22
-バージョン:
#contents
** 修正 [#tcb7de21]
AutoLink用の正規表現について、
「正規表現の中で空白やコメント文を使用できるようにする」...
(1.4.3)
- [[cvs:func.php]](r1.57-1.58) -- 半角スペースについて別...
(1.4.8)
- [[cvs:lib/func.php]] (1.95, 1.98, 1.99) -- white space ...
** [1.4.3] ページ名が英数字で間にスペースがあると、autoli...
autolink.dat のスペースをエスケープしたらOKそうでした。
autolink.dat
...|InterWikiテクニカル|Wen Jiabao|ヘルプ|整形ルール|日...
...|InterWikiテクニカル|Wen\ Jiabao|ヘルプ|整形ルール|日...
----
-PCRE_EXTENDED(エスケープするか 文字クラスの内部にある場...
-cvsに投入しました。[[cvs:func.php]](v1.4:r1.57) func.php...
--[[v1.4:r1.57]]で、とりあえずページ名が英数字で間にスペ...
-v1.4:r1.57導入すると''「ほげ」''とか''ほげ・げほ''とかが...
-たらこせるさんと同じく、v1.4:r1.57導入で一部のページがAu...
-v1.4:r1.57での変更点(557行目)にtypoがあります。そのせ...
-$result .= str_replace(' ','\\ ',preg_quote(substr($pag...
+$result .= str_replace(' ','\\ ',preg_quote(mb_substr($...
--[[BugTrack/514]]もこれで直りました。 -- [[reimy]] &new{...
-cvsに投入しました。[[cvs:func.php]](v1.4:r1.58) -- [[ぱ...
- BugTrack2/319 ([[下>#jeddb01c]]に移動)
//#comment
----
** [1.4.8] AutoAlias 利用時に、generate_trie_regex 関数が...
AutoAlias 導入前は、ページ名に''#'' が使えないこともあっ...
しかし、[[#01>test/01]] のように((例...
generate_trie_regex 関数を
if ($index < ($i - 1)) {
// Some more keys found
// Recurse
$regex .= str_replace(array(' ','#'), array('\\ ','\\#...
generate_trie_regex($array, $index, $i, $pos + 1);
} else {
// Not found
$regex .= str_replace(array(' ','#'), array('\\ ','\\#...
preg_quote(mb_substr($array[$index], $pos), '/'));
}
として''#'' もエスケープするようにすると、正常に表示され...
--------
- 把握しました。CVSリポジトリも追いました。こちらは [[Bug...
- BugTrack2/319 よりコピーしました。&br;ところで、[[cvs:l...
-- すみません。履歴を追いかけただけで修正はこれから~、な...
- [[cvs:lib/func.php]] (1.95, 1.98, 1.99): preg_quote_ext...
+// preg_quote(), and also escape PCRE_EXTENDED-related ...
+// REFERENCE: http:// www.php.net/manual/en/reference.p...
+// NOTE: Some special whitespace characters may warned ...
+// because of mismatch-possibility between PCRE_E...
+function preg_quote_extended($string, $delimiter = NULL)
+{
+ // Escape some more chars
+ $regex_from = '/([[:space:]#])/';
+ $regex_to = '\\\\$1';
+
+ if (is_string($delimiter) && preg_match($regex_from, $...
+ $delimiter = NULL;
+ }
+
+ return preg_replace($regex_from, $regex_to, preg_quote...
+}
+
// Generate one compact regex for quick reTRIEval,
// that just matches with all $array-values.
//
@@ -647,13 +663,11 @@
if ($index < ($i - 1)) {
// Some more keys found
// Recurse
- $regex .= str_replace(' ', '\\ ', preg_quote($char, ...
+ $regex .= preg_quote_extended($char, '/') .
generate_trie_regex($array, $index, $i, $pos + 1);
} else {
// Not found
- $regex .= str_replace(' ', '\\ ',
- preg_quote(mb_substr($array[$index], $_pos), '/'));
+ $regex .= preg_quote_extended(mb_substr($array[$inde...
}
$index = $i;
}
-- 今までの経緯からすると、PCRE_EXTENDED の仕様を認識して...
-- 補足: PCRE_EXTENDED が無視する whitespace と、 [:spac...
- lib/func.php (1.100) で、特に問題はないことを確認しまし...
//#comment
*** その他: [#tb4ec63c]
- 本件に付随し、generate_trie_regex() について若干の整理...
-- [[cvs:lib/func.php]] (1.94) 関数ヘッダの整理
-- [[cvs:lib/func.php]] (1.96) 文字列の連結方法を修正 (ペ...
-- [[cvs:lib/func.php]] (1.97) 内部変数の名前をそれらしく...
-- [[cvs:lib/func.php]] (1.100) "if (mb_substr($array[$i]...
- 本件に付随し、generate_trie_regex() をもう少し観察し直...
こうなる部分は (?:1(?:0|1|2|3|4|5|6|7|8|9)|2(?:0|1|2|3|4...
本来こうできる [12][0-9]
-- そもそもこうした(木構造を正規表現に落とし込むような)機...
//#comment
ページ名: