スターサーバー(PHP7.2.29)にPukiWikiをアップロードして使っています。
ロリポップに移行して使おうと思ったのですが、 AutoAliasを使う設定にしていると エイリアス名が書いてある行が表示されなくなることがあります。 書いてあっても問題なく表示されるエイリアス名と行もあれば、 エイリアス名が書いていなくても表示されない行などもありました。
自分で見つけた条件は エイリアス名の中に「旅」という字が含まれているとその行が表示されなくなることがあります。 例としてAutoAliasNameに
- [[旅>リンク]]
と書いて、「旅にでたい」と書き込んだりするとその「旅にでたい」は消えてしまいます。
- [[旅>リンク]]
を消去して、
- [[旅行>リンク]]
と書いて、「旅行代」と書き込んでみたらそれは問題なく表示されました。
PHP7.3で、正規表現ライブラリPCREのエンジンが更新されたことによる不具合です。
$ $php72 --version PHP 7.2.0 (cli) (built: Nov 29 2017 00:17:00) ( ZTS MSVC15 (Visual C++ 2017) x86 ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies $ $php73 --version PHP 7.3.0 (cli) (built: Dec 6 2018 02:17:00) ( ZTS MSVC15 (Visual C++ 2017) x86 ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies
b2512.php:
<?php echo "旅行\n"; echo bin2hex('旅行') . "\n"; $s = preg_replace('/旅/x', '_', '旅行'); echo "$s\n"; echo bin2hex($s) . "\n";
実行(UTF-8):
$ $php72 b2512.php 旅行 e69785e8a18c _行 5fe8a18c $ $php73 b2512.php 旅行 e69785e8a18c _▒行 5f85e8a18c
「旅」e6 97 85 のうち 3バイト目 85 が置換されずに残っている。
実行(EUC-JP):
$ $php72 b2512eucjp.php 旅行 ceb9b9d4 _行 5fb9d4 $ $php73 b2512eucjp.php 旅行 ceb9b9d4 _行 5fb9d4
EUC-JPの場合 PHP7.2とPHP7.3 で差分無し