字符串 CREATE TABLE `aa_2` ( 中
TABLE `aa_2` 的正则表达式 

解决方案 »

  1.   

    $somecontent = CREATE TABLE `aa_2` (;
    preg_match_all ("/(???)/", $somecontent, $matches);
      

  2.   

    CREATE TABLE `aa_2` (
      `id` int(5) NOT NULL AUTO_INCREMENT,
      `name` varchar(50) NOT NULL,
      `desca` varchar(200) NOT NULL,
      `testint` int(10) unsigned NOT NULL,
      PRIMARY KEY (`id`),
      KEY `id` (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
    CREATE TABLE `bb_2` (
      `id` int(5) NOT NULL AUTO_INCREMENT,
      `name` varchar(50) NOT NULL,
      `desca` varchar(200) NOT NULL,
      `testint` int(10) unsigned NOT NULL,
      PRIMARY KEY (`id`),
      KEY `id` (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;把 TABLE 后的 ‘aa_2’,'bb_2' 改为 ‘aa_3’'bb_3'
      

  3.   


    echo preg_replace('#(create\s*table\s*[`]?)(\w+)(\d+)([`]?)#iU', '$1${2}3$4', $sql);
      

  4.   

    还有个问题  当‘aa’ 改为 ‘aa_1’ 当为‘aa_1’改为‘aa_2’ 以此类推
      

  5.   


    $sql =<<<doc
    CREATE TABLE `aa_2` (
      `id` int(5) NOT NULL AUTO_INCREMENT,
      `name` varchar(50) NOT NULL,
      `desca` varchar(200) NOT NULL,
      `testint` int(10) unsigned NOT NULL,
      PRIMARY KEY (`id`),
      KEY `id` (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
    CREATE TABLE `bb` (
      `id` int(5) NOT NULL AUTO_INCREMENT,
      `name` varchar(50) NOT NULL,
      `desca` varchar(200) NOT NULL,
      `testint` int(10) unsigned NOT NULL,
      PRIMARY KEY (`id`),
      KEY `id` (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
    doc;
    function replaceSql($m)
    {
    unset($m[0]);
    $m[3] = $m[3] != '' ? ++$m[3] : '_1';
    return join($m);
    }
    echo preg_replace_callback('#(create\s*table\s*[`]?)([^\d\s`]+)([\d]*)([`]?)#i', 'replaceSql', $sql);