类别记录存在一个文件中,然后读取文件,按行读取,对每行进行处理,保存在一个数组里,使用preg_match就可实现

解决方案 »

  1.   

    例如if ($cgi) {
        while($line=gzgets($cgi)) {
            if (strpos($line,"html") == false) continue;
            if (preg_match("/(.*)正则段/i", $line, $matches)) {
                $test .= $matches[1].',';
            }
        }
      

  2.   

    很久不写程序了吧?怎么什么都忘了呢?
    不是有m修饰符吗?
    m:默认的正则开始"^"和结束"$"只是对于正则字符串如果在修饰符中加上"m",那么开始和结束将会指字符串的每一行:每一行的开头就是"^",结尾就是"$"。 <?php
    $menustr = <<<EOD
    66_0_<a href="#" target="_parent">退出DEDECMS</a>_#_1_0_0_,
    67_0_频道管理_#_1_0_0_,
    68_67_板块模板管理_../web_type_web.php_1_0_0_,
    69_67_通用模板管理_../file_view.php?activepath=<?=$mod_dir?>_1_0_0_,
    70_67_主页创建向导_../add_home_page.php_1_0_0_,
    71_0_内容维护_#_1_0_0_,
    72_71_待审核文章_../list_news_member.php_1_0_0_,
    73_71_专题管理_../list_news_spec.php_1_0_0_,
    74_71_评论管理_../list_feedback.php_1_0_0_,
    75_0_内容发布_#_1_0_0_,
    76_75_专题创建向导_../add_news_spec.php_1_0_0_,
    77_75_图集发布向导_../add_news_pic.php_1_0_0_,
    78_75_软件发布向导_../add_news_soft.php_1_0_0_,
    79_75_Flash向导_../add_news_flash.php_1_0_0_,
    80_0_附助功能_#_1_0_0_,
    81_80_友情链接管理_../add_friendlink.php_1_0_0_,
    82_80_投票管理_../add_vote.php_1_0_0_,
    83_80_论坛扩展_../bbs_addons.php_1_0_0_,
    84_80_留言簿管理_<?=$art_php_dir?>/guestbook/index.php_1_0_0_,
    85_0_会员管理_#_1_0_0_,
    86_85_网上会员管理_../list_user.php_1_0_0_,
    87_0_文件管理_#_1_0_0_,
    88_87_文件浏览器_../file_view.php_1_0_0_,
    89_0_数据库管理_#_1_0_0_,
    90_89_数据备份/还原_../sys_back_data.php_1_0_0_,
    91_89_MySQL命令_../sys_domysql.php_1_0_0_,
    92_0_系统帮助_#_1_0_0_,
    93_92_系统信息_../blank.php_1_0_0_,
    EOD;
    preg_match_all("/^.+$/m", $menustr, $regs);
    print_r($regs);
    ?>
      

  3.   

    谢谢你。为了效率,这种解法pass,读文件一行行的做法是差劲的。如果按照你的思路,应该这样
    用这个sql,然后取来array就ok了。select CONCAT_WS( '_', id , pid , title , link , published , ordering , access , params  )  from _collector_menu