PHPベストプラクティス >

文字列処理関数の謎の仕様

  • PHPの文字列処理関数の注意が必要な仕様をまとめています。

null が空文字列になる。

  • 文字列処理関数に null を与えると、空文字列("")を返す傾向にあります(すべての関数を調べたわけではありません)。
  • Commons_Lang_StringUtils? にあるマルチバイト対応ラッパーメソッド(strpos、strtoupperなど)は、互換性のためこれらの仕様を変更していませんが、その他のメソッドは、Apache Commons Lang の StringUtils? にあるメソッドと同様の仕様にしています(つまり、null を与えられた場合、null を返します)。
  • データの一貫性を考慮すると、Commons_Lang_StringUtils? のラッパーメソッドではなく、その他の Apache Commons と互換のメソッドを使用することをおすすめします。

str_split

  • null や空文字列('')を str_split で1文字ずつにスプリットすると、空文字列の要素を一つ持つ配列が返されます。
    $ php -r 'var_dump(str_split(null, 1));'
    array(1) {
      [0]=>
      string(0) ""
    }
    $ php -r 'var_dump(str_split("", 1));'
    array(1) {
      [0]=>
      string(0) ""
    }
  • strlen("") と count(str_split("", 1)) の結果が異なり(null の場合も同様)、やや一貫性を欠きます。そこで、str_split をマルチバイト対応しラップした Commons_Lang_StringUtils?::str_split() では、null の場合には null を返し、空文字列の場合には空の配列(array())を返すようにしています。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-01-03 (木) 14:21:31 (4216d)