<?php
$sql="SELECT * FROM (SELECT col1, col2 FROM t1, (SELECT col3, col4 FROM t2) t3) t4";
echo preg_replace("/^SELECT (.*?) FROM .*/i", "\\1", $sql);
?>

解决方案 »

  1.   

    preg_match( "#SELECT (.+) FROM#is", $sql, $res );
    print_r( $res );
      

  2.   

    zhiin() ouk.cn ()  是对的, ice_berg16(寻梦的稻草人) 少了?号
      

  3.   

    不好意思...写错了
    少加了参数
    preg_match( "#SELECT (.+) FROM#isU", $sql, $res );
    print_r( $res );
      

  4.   

    if(preg_match("/^select\s(.+)\sfrom/iU","SELECT      *       FROM (SELECT col1, col2 FROM t1, (SELECT col3, col4 FROM t2) t3) t4",$res))
    {
    print_r($res);
    }
    自已写有点丑陋。
      

  5.   

    我自己写的。
    \s*SELECT\s+(.*?)\s+FROM\s+(.*)不过新问题来了。
    见http://community.csdn.net/Expert/topic/4039/4039280.xml?temp=.6315424