【发布时间】:2017-09-11 12:58:36
【问题描述】:
我正在为 Opencart 2.3.x 构建一个扩展,我需要用 _DIR_IMAGE 替换所有出现的 DIR_IMAGE ,所以我想出了这个仅适用于 PHP 的正则表达式,但不适用于 VQMod mod:
<operation error="log">
<search position="replace"><![CDATA[/(.*?)(DIR_IMAGE)(.*?)/g]]></search>
<add><![CDATA[$1_DIR_IMAGE$3]]></add>
</operation>
这个 PHP-only 确实有效:
preg_replace('/(.*?)(DIR_IMAGE)(.*?)/g', '$1_DIR_IMAGE$3', $string);
谁能指出我正确的方向?在这一点上,我假设上述表达式的替代方案受到赞赏。
【问题讨论】:
-
PHP 正则表达式不支持
g修饰符。preg_replace默认替换所有不重叠的事件。 Besdies,您需要使用regex="true"才能使用正则表达式。<search regex="true"> -
@AD7six 因为我正在使用 VQMod,它是用于覆盖原始文件的第三方代码。这是唯一的方法。
-
@WiktorStribiżew 我尝试使用 ~exp~ 无济于事,还有 /exp/
-
添加正则表达式属性并重试 -
<search regex="true"> -
@WiktorStribiżew 你是对的,我忘记了正则表达式属性,我很少使用它,所以我什至不记得.. 请写下你的答案,以便我标记它。谢谢!
标签: php regex vqmod opencart2.3