PHP 8.4 未満では全角スペースを正しく trim できない
参考記事:https://qiita.com/rana_kualu/items/87bc5dd0396103bd7a32
どういう事かと言うと、例えば下記のコードがあったとします
#!/usr/local/bin/php
<?php
echo trim(' イェーイ', ' ');
?>
この結果の期待値はもちろん「イェーイ」ですね
では実行結果を見てみましょう
$ ./php-trim-error.php
��ェーイ
おめでとうございます!!!!! 正しく文字化けしましたね!!!
この辺りは文字コード表とかググっていただければと思いますが、UTF-8 でもこの問題は解決できません。
じゃあ、どうすれば!?
PHP 8.4 以上に上げれば良いと思われますが、現状 PHP 8.4 は業務では使えません。執筆時の2023年12月時点ではお客様の強いご要望が無い限り RHEL 9 で納品するとなれば PHP 8.0 です。
PHP 8.4 (見込み) が普及するまでは preg_replace を使うしかない
#!/usr/local/bin/php
<?php
echo preg_replace('/^\s+|\s+$/u', '', ' イェーイ');
?>
実行結果
$ ./php-trim-error.php
イェーイ
イェーイ!!!!!🎉🎉🎉🎉🎉🎉🎉🎉
( Shift_JISはもうそろそろ無くなっても良いと思う...ので度外視してます。必要であれば mb_convert_encoding かましてくだされ... )
それなりのデータ数が無いと気付かない盲点なので、この記事が参考になれば幸いです