タイトル通りですが、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の闇だ...