1. 论坛系统升级为Xenforo,欢迎大家测试!
    Dismiss Notice

问一个PHP的正则问题。

Discussion in '后端开发' started by lane, Aug 8, 2009.

  1. lane

    lane New Member

    Joined:
    Sep 5, 2005
    Messages:
    6,548
    Likes Received:
    29
    事情是这样的,我在所有的字段两边都加上了‘`’这个符号,但是呢,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, 怎么能判断一下匹配到了才加 ‘`’呢?
     
  2. webren

    webren New Member

    Joined:
    Sep 6, 2008
    Messages:
    2,934
    Likes Received:
    0
    搞php的上。