PHPでtrimとemptyを同時に使う

投稿日:

PHP で文字列が空じゃないかを調べる時って empty を使いますよね。

でも、empty だけだと変数に半角スペースだけセットされてるような場合には判定できないので、trim をしてから empty で判定したい。

が、以下の様に書くとエラーになってしまいます。

if ( empty(trim($text)) ) echo 'empty!';

で、こういう場合どうすれば良いか?

もちろん、先に $text = trim ($text) とかしておいても良いんですが、出来れば一気に処理してしまいたい。

そんな時のお話。

で、いきなり答え。

そんな時はコレで一発で処理できます。

if (trim($text) == false) echo 'empty!';

そっか~って感じなんですけど、これは便利。

動作としては以下の様な感じ。

# php -a
Interactive shell

php > $text = '';
php > if (trim($text) == false) echo 'empty!';
empty!
php > $text = 'a';
php > if (trim($text) == false) echo 'empty!';
php >
php > $text = ' a ';
php > if (trim($text) == false) echo 'empty!';
php >
php > $text = ' ';
php > if (trim($text) == false) echo 'empty!';
empty!

期待通り $text が空だったり、半角スペースだけで構成されていたりする場合を拾うことが出来ます。

一応、マニュアルにも書いてあります。

empty() は、変数のみをチェックし、それ以外の値を チェックすると文法エラーを生成します。つまり、 empty(trim($name)) は動作しません。かわりに trim($name) == false を使います。

上記の例だと、全角のスペースは処理されませんが、事前に全角スペースを除去する処理を入れるか、trim で charlist で全角スペースを入れて実行すると行けるかも知れません。

更新日: