偷懒小技能PHP

    添加时间:2013-5-31 点击量:

    1、有时辰,在模板里面写变量挺麻烦的,为了快速点儿,写个函数好了。。

    <form action= method=post>
    <label>变量:</label><input name=value type=text /><br/>
    <label>数组:</label><textarea name=codes cols=70 rows=6></textarea><br/>
    <input type=submit value=生成 />
    </form>

    <?php

    ¥code = ¥_POST[codes];
    ¥value = ¥.¥_POST[value];

    function tplval(¥str, ¥value){
    ¥regex = /(\[.\])(.)/;
    preg_match_all(¥regex, ¥str, ¥matches);
    foreach(¥matches[1] as ¥key=>¥val){
    ¥new .= {.¥value.¥val.}.¥matches[2][¥key].<br/>;
    }
    echo ¥new;
    }

    tplval(
    ¥code, ¥value);

    ?>

    2、当你所用的 cms 不带有快捷强大的查询办法时,不妨本身写一个生成sql语句的函数:



        ¥table[goods] = array(g,); //表别号,以及查的字段
    
    ¥table[order] = array(o);//同上
    ¥table[member] = array(m,id,name,address);
    //¥table[member] = id,name,address; 表不取别号

    ¥where[o.id] = ¥_GET[id];
    ¥where[o.addTime] = array(between,¥time1,¥time2, and); //array(like,%abc); array(in,¥arr);
    ¥where[o.price] = array(>,¥price,or);
    ¥join[left] = array(o.id=g.oid,m.id=o.mid); //默示三张表,依次应用 join left;
    //或都只有一个left join 第二个是 right jion时 : ¥join[right] = array(m.id=o.mid);


    ¥other[order] = array(desc=>o.addTime);
    ¥otehr[limit] = 5,10;

    // 生成查询语句
    function sqlSelect(¥where = array(),¥table = array(), ¥join = array(), ¥other = array()){

    if(!empty(¥table) && is_array(¥table)){¥sql = SELECT ; }
    foreach(¥table as ¥tname => ¥val){

    if(is_array(¥val)){

    if( == ¥val[1] || empty(¥val[1])){
    ¥fields .= `¥val[0]`.,;
    }
    else{
    ¥arr = explode(,,¥val[1]);
    ¥fields .= `¥val[0]`.`.implode(`,`¥val[0]`.`, ¥arr).`,;
    }
    ¥tableName = `¥tname` AS `¥val[0]`;
    }
    else{
    if( == ¥val){
    ¥fields .= `¥tname`.,;
    }
    else{
    ¥arr = explode(,, ¥val);
    ¥fields .= `¥tname`.`.implode(`,`¥tname`.`, ¥arr).`,;
    }
    ¥tableName = `¥tname`;
    }
    ¥tables.= ¥tableName,;
    ¥tableArr[] = ¥tableName;
    }
    ¥tables = substr(¥tables, 0, -1);
    ¥fields = substr(¥fields, 0, -1);

    if(empty(¥join) && !empty(¥table)){
    ¥sql .= ¥fields FROM ¥tables;
    }
    elseif(!empty(¥join) && is_array(¥join)){
    ¥sql .= ¥fields FROM ¥tableArr[0];
    ¥i = 1;
    foreach(¥join as ¥key => ¥sec){
    ¥key = strtoupper(¥key);
    if(is_array(¥sec)){
    foreach(¥sec as ¥val){
    ¥sql .= ¥key JOIN ¥tableArr[¥i] ON ¥val ;
    ¥i++;
    }
    }
    else{
    ¥sql .= ¥key JOIN ¥tableArr[¥i] ON ¥sec ;
    ¥i++;
    }

    }
    }

    if(is_array(¥where) && !empty(¥where)){
    foreach(¥where as ¥field => ¥sec){
    ¥arr = explode(.,¥field); //多表查询时,带表名的景象
    if(count(¥arr)==2){
    ¥field = `¥arr[0]`.`¥arr[1]`;
    }
    else{
    ¥field = `¥arr[0]`;
    }
    if(is_array(¥sec)){
    if(isset(¥sec[2])) ¥link = end(¥sec);
    else ¥link = and;

    ¥link = strtoupper(¥link);
    ¥keyWord = strtoupper(¥sec[0]);
    if(BETWEEN == ¥keyWord || NOT BETWEEN == ¥keyWord){
    ¥wheres .= ¥field ¥keyWord ¥sec[1] AND ¥sec[2] ¥link ;
    }
    elseif(IN == ¥keyWord || NOT IN == ¥keyWord){
    if(is_array(¥sec[1])){
    ¥sec[1] = implode(,, ¥sec[1]);
    }
    ¥wheres .= ¥field ¥keyWord(¥sec[1]) ¥link ;
    }
    else{
    ¥wheres .= ¥field ¥keyWord ¥sec[1] ¥link ;
    }
    }
    else{
    ¥wheres .= ¥field=¥sec AND ;
    }
    }
    ¥sql .= empty(¥table)? substr(¥wheres, 0, -4) : WHERE .substr(¥wheres, 0, -4);
    }

    if(is_array(¥other) && !empty(¥other)){
    if(!empty(¥other[order])){
    if(is_array(¥other[order])){
    foreach(¥other[order] as ¥key => ¥val){
    ¥key = strtoupper(¥key);
    ¥sql .= ORDER BY ¥val ¥key ;
    }
    }
    else{
    ¥sql .= ORDER BY .¥other[order];
    }
    }
    !empty(¥other[limit])? ¥sql .= LIMIT . ¥other[limit] : ;
    }

    return ¥sql;

    }







    真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》
    分享到: