PHP7.3でAutoAliasNameに日本語が含まれていると本文が表示されないことがある

メッセージ

pukiwiki:質問箱/5383より:

スターサーバー(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 で差分無し




トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-05-04 (火) 01:01:20
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.249 sec.

SourceForge