PHP8.1.8 が2022年7月6日 6:54(日本時間)にリリースされました。
Release php-8.1.8 · php/php-src
PHP: PHP 8 ChangeLog#Version 8.1.8
マイナーバージョンアップであり、細かい修正がほとんどです。日本人的にこの中の修正として特筆すべきものがありましたので紹介です。
修正には mb_convert_encoding の挙動の修正が含まれています。修正のプルリクエストが次です。
この修正により以前記事にした\や~の変換結果が予期せぬ結果になる問題が解決され、PHP8.0 以前と同じ結果を得られる様になりました。
例えば次のコードを実行すると
<?php
function conv($str): string
{
$res = '';
$res .= ' SJIS: ' . mb_convert_encoding($str, 'SJIS', 'UTF-8') . "\n";
$res .= 'SJIS-win: ' . mb_convert_encoding($str, 'SJIS-win', 'UTF-8') . "\n";
return $res;
}
$res = '';
$res = conv('あ');
$res .= conv('~');
$res .= conv('\\');
echo $res;
PHP8.1.0 ~ PHP8.1.7 では
SJIS: あ
SJIS-win: あ
SJIS: ~
SJIS-win: ~
SJIS: \
SJIS-win: \
となり、PHP8.0以前やPHP8.1.8 では
SJIS: あ
SJIS-win: あ
SJIS: ~
SJIS-win: ~
SJIS: \
SJIS-win: \
となります。これで今後は気兼ねなくmb_convert_encoding関数を使えます。 alexdowad さんありがとう。