你可以使用preg_replace regexp和“not”条件吗?

时间:2011-02-04 02:53:33

标签: php regex preg-replace

我正在使用SQL字符串,需要将"SELECT"替换为"SELECT SQL_CALC_FOUND_ROWS"。因为我并不总是知道SQL是什么,所以它可能已经有SQL_CALC_FOUND_ROWS,所以我需要考虑到这种情况,在这种情况下不匹配。

这是我到目前为止所做的:

  

preg_replace('/(^\s+SELECT)/i', 'SELECT SQL_CALC_FOUND_ROWS',$sql);

这将返回: SELECT SQL_CALC_FOUND_ROWS * FROM table

有关:

  

"\n SELECT * from table"

     

OR

     

"SELECT * from table"

我能做到:

  

if (! stristr($sql,'SQL_CALC_FOUND_ROWS') ) { // do my replacement }

但是有没有办法在一个preg_replace中完成所有这些,和/或它是否更快(我希望这将被广泛使用)?

1 个答案:

答案 0 :(得分:2)

您可以使用否定前瞻:

/SELECT(?!\s+SQL_CALC_FOUND_ROWS)/