2013年3月14日总结

1,获取url的扩展名。

例如:www.baidu.com/shop/shop.php?version=20130314

<?php
//$str=$_SERVER["REQUEST_URI"];
$str="http://www.baidu.com/shop/shopdsfsf.JPG?providerId=123456";
$extStr=parse_url($str);
$extArr=explode(".",$extStr["path"]);
echo $extArr[1];
echo "------------------------------<br/>";
$extStr=$_SERVER["PHP_SELF"];
$extArr=explode(".",$extStr);
echo $extArr[1];
echo "------------------------------<br/>";
?>

问:如何获取.php

2,strlen与mb_strlen的区别?

<?php
$str="123abc";
echo strlen($str)."<br/>";//6
$zstr="123中国人abc";
echo strlen($zstr)."<br/>";//15
echo mb_strlen($zstr,"utf8")."<br/>";//9
echo "-----------------------------<br/>";

//测试时文件的编码方式要是UTF8  
$str='中文a字1符';  
echo strlen($str).'<br>';//14  
echo mb_strlen($str,'utf8').'<br>';//6  
echo mb_strlen($str,'gbk').'<br>';//8  
echo mb_strlen($str,'gb2312').'<br>';//10  
?>

3,1234567890如何变为1,234,567,890,写一个函数。

<?php
$str="1234567890";
$preg='/(\d{3})/';
$preg2='${1},';
$str=strrev($str);//字符串翻转  0987654321
$str=preg_replace($preg,$preg2,$str);//不能用双引号 098,765,432,1
$str=strrev($str);//1,234,567,890
echo trim($str);//trim() 函数从字符串的两端删除空白字符和其他预定义字符。
?>

4,如何建立合适的索引

经常需要进行更新操作的属性

1、表的主键、外键必须有索引;
2、数据量超过300的表应该有索引;
3、经常与其他表进行连接的表,在连接字段上应该建立索引;
4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
5、索引应该建在选择性高的字段上;
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:
A、正确选择复合索引中的主列字段,一般是选择性较好的字段;
B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少
甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;
C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;
D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;
E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;
8、频繁进行数据操作的表,不要建立太多的索引;
9、删除无用的索引,避免对执行计划造成负面影响;
以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引
的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引
对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新
操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是
没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负
面影响更大。

5,三个复选框,给三个不同的name.选中一个,其他三个也选中。去掉一个,其他三个也去掉。

6,写一个邮箱的正则。

<?php
$match="/^([a-zA-Z0-9-_\.])+@(([0-9a-zA-Z-])+\.)+([a-zA-Z0-9]{2,4})+$/";
//$match="/^([a-zA-Z0-9_\.-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/";
$strMail="b@yacol@.com.cn";

$re=preg_match($match,$strMail);

var_dump($re);
?>

7,给你两个整形的值,如何不借入第三个变量,交换两个值。

<?php
$a=3;
$b=5;
$a=$a+$b;
$b=$a-$b;
$a=$a-$b;
echo $a."<br/>".$b;
?>

8,已知一个人的出生日期,计算这个人的年龄,精确到天。

<?php
function getAge($birthday){
    $now=date("Ymd");
    //分解当前日期为年月日
    $y=(int)($now/10000);//当前年份保存为int型
    $m=(int)($now%10000/100);//当前月份保存为int型
    $d=($now%100);
    //分解生日为年月日
    $yy=(int)($birthday/10000);//出生年份保存为int型
    $ym=(int)($birthday%10000/100);//出生月份保存为int型
    $yd=($birthday%100);
    //特殊月份计算
    if($y%4==0||($y%400==0&&$y%100==0)){
        $special=29;
    }else{
        $special=28;
    }
    //各月上一个月的天数
    switch($m){
        case 2:$add=31;
        case 4:$add=31;
        case 6:$add=31;
        case 8:$add=31;
        case 9:$add=31;
        case 11:$add=31;
        case 1:$add=31;
        case 5:$add=30;
        case 7:$add=30;
        case 10:$add=30;
        case 12:$add=30;
        case 3:$add=$special;
    }
    if($d<$yd){
        $d=$d+$add;
        $m=$m-1;        
    }
    if($m<$ym){
        $m=$m+12;
        $y=$y-1;
    }
    //运算年龄
    if($now>$birthday){
        $arr["day"]=$d-$yd;
        $arr["month"]=$m-$ym;
        $arr["year"]=$y-$yy;
        return $arr;
    }
    else{
        return 0;
    }
}
$birthday="19880808";
$arrAge=getAge($birthday);
var_dump($arrAge);
?>

打印结果为:

array
  'day' => int 11
  'month' => int 7
  'year' => int 24

9,为什么一般把css放在头部,js放在尾部?(两条以上)

在开发网页时,尽量将css放置在页面的header里,js不管是外部引入的或嵌入的js片段
都应放在页面的尾部。
因为页面在加载时,css加载是可以并发请求 的(同页面中的图片,ie6除外),而js加载
时需要等待一个js文件加载完成后才加载其他资源,为了页面的快速呈现,放置在尾部效果
较好。
同时由于嵌入的js片段会阻塞整个页面 的呈现(外部引入js文件阻塞其他资源下载,
也会阻塞该js引入位置以下的页面的内容 呈现,所以要放置页面的最下面),需要利用工
具来调用,如yui的
YAHOO.util.Event.onDOMReady(function() {...}); 方法,这样至少可以保证页面的框
架出来后才执行需要的js方法。

千里之行,始于足下。改变现在,就是改变未来。改变未来,从现在开始。 个人网站:http://www.wangkongming.cn
原文地址:https://www.cnblogs.com/wangkongming/p/2963298.html