正则表达式仅在select和from之间引用,而不会更改开始和结束引号

时间:2014-02-05 09:55:45

标签: php sql regex oracle

我正在使用php,我想在oracle sql查询中替换单引号。

我有这样的事情:

select 'this is test' for 'stack overflow'' , 'another' single quote was around here' from testtable where id='test' and another='test2'

我正在使用oracle所以转义字符是双单引号。

我的问题是只在selectfrom语句之间找到单引号,替换不应删除每个字段的开头和结尾的第一个单引号。

答案应该是这样的

select 'this is test'' for ''stack overflow''' , 'another'' single quote was around here' from testtable where id='test' and another='test2'

字段数可以变化。在我的例子中它有两个字段,每个字段包含单引号。但有时字段包含引用,有时不包含引号,有时它们会相互跟随,有时则不是。

我厌倦了不同的正则表达式。试着想出一个解决方案,但没有运气

所以我的问题是如何实现这个?哪个php功能或什么正则表达式?

1 个答案:

答案 0 :(得分:0)

我认为你不能直接做你想做的事。 例如,如果您有'field one', 'field' two',则可以将其解释为'field one', 'field'' two''field one '', ''field'' two'

如果可能的话,你可能想尝试这样的事情:

//First put the field names in an array $fields
...

//Then you create the query string like this
$sql = "select '" . implode("', '", str_replace("'", "''", $fields) ) . "' from testtable where id='test' and another='test2'";