偷懒小技能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;
}
真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》
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;
}
真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》