2011-02-04 33 views
1

我正在使用SQL字符串,並且需要用"SELECT SQL_CALC_FOUND_ROWS"替換"SELECT"。因爲我並不總是知道SQL是什麼,所以有可能已經具有SQL_CALC_FOUND_ROWS,所以我需要考慮這種情況,並且在這種情況下不匹配。你可以使用preg_replace正則表達式與「不」條件?

這是我到目前爲止有:

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

這將返回: SELECT SQL_CALC_FOUND_ROWS * FROM table

FOR:

"\n SELECT * from table"

OR

"SELECT * from table"

我可以這樣做:

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

但是,有沒有辦法做到這一點於一身的preg_replace,和/或它更快(我預計這將被廣泛使用)?

回答

2

你可以使用負前瞻:

/SELECT(?!\s+SQL_CALC_FOUND_ROWS)/