2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-02-12

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

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?