概要
preg_replaceで一部(sとか)のパターン修飾子を使用しており、かつ処理する文字列の容量が大きいと
正規表現に間違いがないにも関わらずnullが返却されることがある
パターン修飾子参考:
http://php.net/manual/ja/reference.pcre.pattern.modifiers.php
対策
pcre.backtrack_limitの値を増やすと問題が解決できる。
// デフォルト値は1000000
ini_set('pcre.backtrack_limit', 100000000);
疑問
- 値を増やすことに対するデメリットが無ければもっと大きな値にしてもいいが、怖い
- 一部のパターン修飾子しかこのパラメータは反応しないらしい…
- 今回sしか確認できてない