- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2021-04-20T01:20:35+09:00","default:user","user")
* 特定の文字が含まれるページがAutoLinkされない [#b94e124d]
#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