我正在使用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中完成所有这些,和/或它是否更快(我希望这将被广泛使用)?
答案 0 :(得分:2)
您可以使用否定前瞻:
/SELECT(?!\s+SQL_CALC_FOUND_ROWS)/