preg_replaceでnullが返却される際の対処

  • 6
    いいね
  • 2
    コメント
この記事は最終更新日から1年以上が経過しています。

概要

preg_replaceで一部(sとか)のパターン修飾子を使用しており、かつ処理する文字列の容量が大きいと
正規表現に間違いがないにも関わらずnullが返却されることがある

パターン修飾子参考:
http://php.net/manual/ja/reference.pcre.pattern.modifiers.php

対策

pcre.backtrack_limitの値を増やすと問題が解決できる。

http://php.net/manual/ja/pcre.configuration.php

// デフォルト値は1000000
ini_set('pcre.backtrack_limit', 100000000);

疑問

  • 値を増やすことに対するデメリットが無ければもっと大きな値にしてもいいが、怖い
  • 一部のパターン修飾子しかこのパラメータは反応しないらしい…
    • 今回sしか確認できてない