explode などで文字列を配列に変換したあと、その配列をよく確認すると半角スペースが紛れ込んでいて文字列のマッチングなどができないといった場面に遭遇したときの対処法についてまとめます。
環境
- PHP 7.3.23
具体的な症状
次のようなコードを実行したとします。
<?php
$fruit = ['apple', 'peach', ' banana'];
var_dump(in_array('banana', $fruit, true));
よくみてみると、配列 $fruit の3番目の要素の banana の前に1つ半角スペースが入ってしまっているケースを想定します。
このようなコードを実行した場合、下記の結果となり banana という文字列は $fruit 配列に存在しないことになってしまいます。
$php test.php
bool(false)
対処法
単純な対処法として、空白スペースを取り除いてしまいます。
<?php
$fruit = ['apple', 'peach', ' banana'];
var_dump(str_replace(' ', '', $fruit));
str_replace 関数を使って半角スペースを文字無しに置換します。
$php test.php
array(3) {
[0]=>
string(5) "apple"
[1]=>
string(5) "peach"
[2]=>
string(6) "banana"
}
その後、先ほどと同じように配列の中に特定の文字列を含むか確認してみます。
<?php
$fruit = ['apple', 'peach', ' banana'];
var_dump(in_array('banana', str_replace(' ', '', $fruit), true));
次のような結果を得ることができると思います。
$php test.php
bool(true)