« 2008年1月 | メイン | 2008年4月 »

2008年3月20日

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

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

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

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

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

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