• 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
  • 相关阅读:
    struts2 标签
    Ubutu命令 笔记积累
    虚拟机VirtualBox和Ubutu
    更新PostgreSQL数据
    向PostgreSQL插入数据
    PostgreSQL表依赖性跟踪
    PostgreSQL外部数据
    PostgreSQL分区介绍
    PostgreSQL继承详解
    PostgreSQL模式介绍
  • 原文地址:https://www.cnblogs.com/wangkongming/p/2963298.html
Copyright © 2020-2023  润新知