#author("2022-01-13T00:41:05+09:00;2022-01-13T00:39:58+09:00","","")
#author("2022-01-13T22:59:46+09:00;2022-01-13T00:39:58+09:00","","")
* ユーザ定義ルールの日本語置換がうまくいかない [#s84d3f40]

- ページ: [[BugTrack]]
- 投稿者: [[mt]]
- 優先順位: 重要
- 状態: 完了
- カテゴリー: 本体バグ
- 投稿日: 2022-01-08 (土) 18:45:53
- バージョン: 1.5.3 (UTF-8)
- リリース予定バージョン: 1.5.4

** メッセージ [#ma699f7a]
UTF-8版において、default.ini.php のユーザ定義ルール $line_rules の正規表現にマルチバイト文字を含む文字セット([^あいう]等)を使うと正しく動作しない。

lib/html.php の _convert_line_rule_to_regex関数を次のように変更したら正しく動作した。

 function _convert_line_rule_to_regex($a)
 {
    return '/' . $a . '/u'; // 「u」フラグを追加
 }

参照:

- [[BugTrack/2512]] PHP7.3でAutoAliasNameに日本語が含まれていると本文が表示されないことがある
- [[BugTrack/2518]] 特定の文字が含まれるページがAutoLinkされない (PHP7.3, PHP7.4)

--------
- こちら、理屈はわかるのですが、再現させられませんでした。PHPのバージョンとか、OSバージョン等教えていただけないでしょうか?あと再現する具体的な置換ルールとその時のWikiテキストを知りたいです -- [[umorigu]] &new{2022-01-10 (月) 20:42:51};
-- default.ini.php の $line_rules に「'あいう' => '<b>AIU</b>'」 を追加して、Wikiテキストを 「あいうえおあいうえお」としたところ、レンダリング結果が 「<b>AIU</b>えお<b>AIU</b>えお」 となりました。環境は Windows XAMPP PHP7.4 です -- [[umorigu]] &new{2022-01-10 (月) 21:00:31};
-- 再現しました。「文字セット」なんですね。「'あああ[^あいう]' => '<b>AIU</b>'」 で再現しました。Windows XAMPP PHP7.4 です -- [[umorigu]] &new{2022-01-10 (月) 21:09:33};
-- [ 角かっこ ] で囲む正規表現のこの書き方は「文字クラス」と呼ぶようです -- [[umorigu]] &new{2022-01-12 (水) 23:50:47};
- 説明不足で失礼しました。おっしゃるとおり文字セット以外の動作は正常ぽいため(コードの並びによるのでしょうか)、よけいに混乱させられるバグです。既存の報告・対処にもあったように、UTF版の正規表現にはuフラグをつけたほうが良さそうです。なお環境は Ubuntu20 PHP7.4 でした。 -- [[mt]] &new{2022-01-11 (火) 07:00:17};
-- preg正規表現関数を利用するところすべてに設定してよさそうですが、PukiWiki全体で330か所あり影響が大きすぎるので、今は問題が起きたところのみ u をつけるようにしています -- [[umorigu]] &new{2022-01-12 (水) 23:53:10};
-- ありがとうございます。preg正規表現関数を利用するところすべてに設定してよさそうですが、PukiWiki全体で330か所あり影響が大きすぎるので、今は問題が起きたところのみ u をつけるようにしています -- [[umorigu]] &new{2022-01-12 (水) 23:53:10};
- 対応しました commit:b560142d1d -- [[umorigu]] &new{2022-01-13 (木) 00:39:37};

#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.065 sec.

SourceForge