必ずしも制御する必要のないコンテンツに対してpreg_replaceを実行していて、通貨値(つまり$1.00
)などを含む置換値の問題が発生しています。確かに、これは他の質問で対処されている一般的な問題です。私が見つけた最も近い解決策は次のとおりです。
http://www.procata.com/blog/archives/2005/11/13/two-preg_replace-escaping-gotchas/
私の問題はもっと複雑です。なぜなら、置換値は、少なくとも私が見ることができる方法では、事前に逃げることができるものではないからです。これが私のpregコードです:
$body = preg_replace('/<special_tag id="'.$tagID.'">(.*?)<\/special_tag>/','$1',$body);
ご覧のとおり、設定されたカスタムタグ内のすべてのコンテンツをキャプチャし、周囲の開始タグと終了タグを削除していますが、コンテンツは内部にあります。ただし、置換'$1'
は必要なエスケープには役立ちません。そのため、置換値に含まれている通貨値が誤って終了します。
私はこの交換を考えすぎましたか?特定のタグの一意のIDを考慮に入れる必要があることを念頭に置いて、特別なタグを削除するために使用できるものは他にありますか?
どんな助けでも大歓迎です!