事情是这样的,我在所有的字段两边都加上了‘`’这个符号,但是呢,SQL 的 select 里面还有些函数也被加上了。 举例:(加上后的样子) SELECT `aaa`,`MAX(bbb) AS xxx`,`ccc`,`ddd`,`MAX(`eee`) AS yyy`,`fff`,`COUNT(`ggg`)`,`hhh`,`MAX(`iii`) AS `zzz`` FROM aaa_bbb 所以,就需要把它替换掉,于是我写了这个: $select_fields = preg_replace("/`(\w+)\(`?(\w+)`?\)(\s+\w+\s+)?`?(\w+)?`?`/","\\1(`\\2`)\\3`\\4`",$select_fields); 问题出来了,像COUNT(`ggg`)这种,没有后面的 AS xxx, 怎么能判断一下匹配到了才加 ‘`’呢?