PHP

PHPのquotemetaは空文字列に対してfalseを返す

タイトル通りですが、php-master-changes 2019-02-11で見かけてちょっとびっくりしたので。

perlあがりなものでPHPのquotemetaについてはどうせ同じようなものだろうと今までまじめにマニュアル読んで無かったのですが、quotemetaのマニュアルを確認したところ


空文字を str に渡した場合は FALSE を返します。


とはっきり書かれていました。ということで、PHPのquotemetaの仕様がこうであることは確かなのですが、どうしてこんな変な独自仕様にしたのだろう??

ちなみに元ネタになったと思われるPerlのquotemetaはもちろんですが、Pythonのre.escape(s)もRubyのRegexp.escape(s)もそのまま空文字列を返します。


追記

Doc Bug #54539 quotemeta('') returns falseによると、一旦はバグとして報告されたものの「11年このままだったんだから後方互換性を犠牲にしてまで動作を直すよりはマニュアルを直す」ということになったようですね。よくあるPHPの闇だ...