#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