Preg_replace无法正常工作

时间:2017-10-29 09:39:25

标签: php regex preg-replace

所以这是我的字符串:

$tmpl = "...TABLE __? (`id` int(11...."

这是一个preg_replace:

$tmpl = preg_replace('/([^"\'0-9a-z_])__([a-z_]+[^"\'])/i', "\$1".$this->config->db_prefix2."\$2", $tmpl);

顺便说一下 $ this-> config-> db_prefix2 等于“ list _

但是当代码执行时,preg_replace不执行任何操作(保留所有内容而不进行更改)。在我看来,问题出在preg_replace正则表达式中。这个想法是 替换__?列表_?

1 个答案:

答案 0 :(得分:1)

我不确定为什么你这么复杂的模式就可以了呢

 $tmpl = str_replace('__?', $this->config->db_prefix2, $tmpl);

或者如果你必须使用preg_replace

 $tmpl = string_replace('/__\?/', $this->config->db_prefix2, $tmpl);

你可以在这里测试一下

https://regex101.com/r/pufIoY/1

也不要怪因为你把桌子名称排除了

  

$ tmpl =“... TABLE __?(id int(11 ....”

那就是说,如果我正在模仿这个,我会用这样的东西

CREATE TABLE {DbPrefix}.{Table} ( id int(11...."

然后使用,str_replace('{DbPrefix}', $prefix )。主要是因为它比__?更具可读性。但这是你的派对。