プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、trim()関数は全角スペースを除去してくれないので気を付けてね、な話
タイトルの通りです。
PHPのtrim()関数は、全角スペースを除去してくれません。
全角スペースも除去したい場合は、事前に、

$str = mb_ereg_replace(' ', ' ', $str);

とかやって、全角スペースを半角スペースに変換してからtrim()関数をかましてください。
※書くのが面倒くさいのでmb_ereg_replace()を例に出していますが、
 これをやると途中の全角スペースも半角スペースになってしまいます。
 こだわり派な人は正規表現による置換とかで対応してください。

それでは、詳細……と言うほどでもないですが、詳細を書いていきます。

うっかりしていましたが、PHPのtrim()関数って全角スペースを除去しないのですね。

例えば、こんなコードを実行するとφ(--)

<?php

$ary = array(
                '後-半角 ',
                '後-全角 ',
                ' 前-半角',
                ' 前-全角',
                ' 両-半角 ',
                ' 両-全角 '
            );

print "■trim()前\n";

foreach($ary as $value){
    print "'" . $value . "'\n";
}

print "\n■trim()後\n";

foreach($ary as $value){
    print "'" . trim($value) . "'\n";
}

こんな結果になりますφ(--)

■trim()前
'後-半角 '
'後-全角 '
' 前-半角'
' 前-全角'
' 両-半角 '
' 両-全角 '

■trim()後
'後-半角'
'後-全角 '
'前-半角'
' 前-全角'
'両-半角'
' 両-全角 '

半角スペースは除去されましたが、
全角スペースは残っています。

全角スペースも除去したければ、例えば、こんな感じのコードにしてφ(--)

<?php

$ary = array(
                '後-半角 ',
                '後-全角 ',
                ' 前-半角',
                ' 前-全角',
                ' 両-半角 ',
                ' 両-全角 '
            );

print "■trim()前\n";

foreach($ary as $value){
    print "'" . $value . "'\n";
}

print "\n■trim()後\n";

foreach($ary as $value){
    $value = mb_ereg_replace(' ', ' ', $value);
    print "'" . trim($value) . "'\n";
}

事前に全角スペースを半角スペースに変換してください。
実行結果は、こんな感じになりますφ(--)

■trim()前
'後-半角 '
'後-全角 '
' 前-半角'
' 前-全角'
' 両-半角 '
' 両-全角 '

■trim()後
'後-半角'
'後-全角'
'前-半角'
'前-全角'
'両-半角'
'両-全角'

全角スペースも除外されましたね。

そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事