我正在对我不一定控制的内容运行 preg_replace,并且遇到了包含货币值(即$1.00
)之类的替换值的问题。诚然,这是一个常见问题,已在其他问题中得到解决。我找到的最接近的解决方案是:
http://www.procata.com/blog/archives/2005/11/13/two-preg_replace-escaping-gotchas/
我的问题更复杂,因为替换值不是我可以提前逃脱的东西,至少不是我能看到的方式。这是我的预置代码:
$body = preg_replace('/<special_tag id="'.$tagID.'">(.*?)<\/special_tag>/','$1',$body);
如您所见,我正在捕获一组自定义标签中的所有内容,并删除周围的开始和结束标签,但保留在里面找到的内容。然而,替换'$1'
并不适合所需的转义,因此恰好在替换值中的货币值会被错误地终止。
我有没有想过这个替代品?还有什么我可以用来删除我的特殊标签的东西,记住它必须考虑到该特定标签的唯一 ID?
任何帮助将不胜感激!