#author("2021-05-03T00:02:25+09:00","default:user","user")
#author("2021-05-03T00:03:41+09:00","default:user","user")
* 特定の文字が含まれるページがAutoLinkされない (PHP7.3, PHP7.4) [#b94e124d]

- ページ: [[BugTrack]]
- 投稿者: [[umorigu]]
- 優先順位: 低
- 状態: 完了
- カテゴリー: 本体バグ
- 投稿日: 2021-04-20 (火) 01:01:37
- バージョン: 1.5.3
- リリース予定バージョン: 1.5.4

** メッセージ [#k87dad72]
AutoLinksで"潰瘍性大腸炎"と"炎症性腸疾患"を作成しても、リンクが形成されません。 .datファイルには正規表現で記載されていますが、ページでリンクとして書き換え処理ができていないようです。
[[pukiwiki:質問箱/5407]] より

----

再現しました (PukiWiki 1.5.3/PHP7.4/UTF-8) 。「腸」という文字が含まれるとNGみたいです。「ああ腸」のようなページもリンクされませんでした(umorigu)


暫定対策:
lib/make_link.php :150 の '/x' を '/xu' にすることでAutoLinkされるようになります。

 	function convert($string, $page)
 	{
 		$this->page   = $page;
 		$this->result = array();
 
 -		$string = preg_replace_callback('/' . $this->pattern . '/x',
 +		$string = preg_replace_callback('/' . $this->pattern . '/xu',
 			array(& $this, 'replace'), $string);
 
 		$arr = explode("\x08", make_line_rules(htmlsc($string)));
 



--------
- PHP7.2 OK ; PHP7.3 NG (AutoLinkされず) でした。 [[BugTrack/2512]]と同じく、PHP7.3での正規表現エンジンの変更が影響している可能性があります -- [[umorigu]] &new{2021-04-20 (火) 01:02:58};
- 本件は [[BugTrack/2512]] の修正で直っていました。(少し、事後的に実装を修正しました) commit:d03da57827 preg_replace は100か所、 preg_ は400か所ほど見つかったので影響を考えて、 preg関数のうち、オプションに /x を与えている5か所のみ、u を追加して /xu としています。(本来は、UTF-8設定で preg系正規表現関数を利用する際は常に u を設定するのが正しそうではあります ) -- [[umorigu]] &new{2021-05-02 (日) 23:58:35};
-- lib/func.php - get_autoaliases()
-- lib/init.php - $NotePattern
-- lib/make_link.php - class InlineConverter - convert(), get_objects(); class Link_plugin - set()

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

SourceForge