LoginSignup
1
0

PHP 8.4 未満では全角スペースを正しく trim できない

参考記事:https://qiita.com/rana_kualu/items/87bc5dd0396103bd7a32

どういう事かと言うと、例えば下記のコードがあったとします

#!/usr/local/bin/php
<?php

echo trim(' イェーイ',  ' ');

?>

この結果の期待値はもちろん「イェーイ」ですね

では実行結果を見てみましょう

$ ./php-trim-error.php

��ェーイ

おめでとうございます!!!!! 正しく文字化けしましたね!!! :scream:

この辺りは文字コード表とかググっていただければと思いますが、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 かましてくだされ... )

 
それなりのデータ数が無いと気付かない盲点なので、この記事が参考になれば幸いです

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0