« CakePHPの単数形→複数形の処理はしっかりしていた | メイン | 都道府県マスターテーブルは適当に作らないように »

2008年03月20日

PHPで特定の文字より前にある文字列を得る

指定した文字列の中で、特定の文字より後ろの文字列を返してくれる関数として「strstr」がありましたが、PHP6から特定の文字より前にある文字列を返してくれるフラグが追加されているようです。

string strstr  ( string $haystack  , string $needle  , bool $before_needle  )

のように、第3引数にtrueを指定すればOKで、前後ともに最初に現れる場所が基準となっています。

確かに使う場面が多い割には、今までPHPの関数として用意されておらず、「substr + strpos」の組み合わせか正規表現を使っていましたが、PHPのバージョンの制約を考慮しなければ便利になりました。

しかし、大文字・小文字を区別しない「stristr」という関数がある一方で、新しい関数ではなく既存の関数でのフラグのオン・オフで済まそうとするのは微妙な話です(個人的には逆だと思うのですが)。ただでさえ、haystackとneedleの位置が関数によってバラバラなPHPなので、またややこしくなる原因にもなりそうです。

トラックバックURL

このエントリーのトラックバックURL:
http://cms.tank.jp/mt/mt-tb.cgi/797

コメントする

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)