• PHP第九课 正則表達式在PHP中的使用


    今天内容
    1.正則表達式
    2.数学函数
    3.日期函数
    4.错误处理


    正則表達式:
    1.模式修正符
    2.五个经常使用函数




    另外一个正則表達式的站点:http://www.jb51.net/tools/zhengze.html

    正則表達式
    1.原子
    2.元子符
    3.模式修正符




    正則表達式函数
    1.preg_match();
    2.preg_match_all();
    3.preg_grep();
    4.preg_replace();
    5.preg_split();




    原子:




    .:代表随意一个字符
    w: 字母 数字 下划线




    元子符:




    *:修饰前面的,0,1,多个.代表随意多个字符,直到结束
    +:一个.多个
    ?:0个一个前面的原子
    |:代表或
    ^:一开什么开头
    $:以什么结尾
    :词边缘
    B:非词边缘




    单个字母 数字
    a-z A-Z 0-9 代表随意一个字符
    []代表里面的随意一个字符
    [^abc]他里面除了abc的随意一个字符
    ()代表一个单元
    d 随意一个数字
    D 随意一个非数字
    w:代表随意一个字母数字下划线
    W:出了字母.数字.下划线意外随意一个字符
    s:空白字符
    S:除了空白字符以外的随意一个字符
    {2}:2个原子
    {2,}:2个以上的原子
    {2,5}: 2-5个前面的原子




    模式修正符:
    /正則表達式/U




    匹配与以上特殊字符同名的普通字符,须要在前面增加/

    <?php
    		$sub = "www.baidu.com";
    
    
    
    
    
    
    
    
    		$ptn = '/w*.w*.w*/';
    
    
    
    
    		//         正則表達式,元数据,返回的数据
    		preg_match($ptn, $sub,$mats);
    
    
    
    
    		echo "<pre>";
    		print_r($mats);
    		echo "</pre>";
    		
    		?>	
    







    //匹配ip

    <?php 
    			 $str = "my ip is 192.168.10.1sdjlfajdf192.178.39.4la";
    
    
    
    
    			 $ptn = '/d+.d+.d+.d+/';
    			 
    			 preg_match_all($ptn, $str,$mats);
    
    
    
    
    			 echo "<pre>";
    			 print_r($mats);
    			 echo "</pre>";
    
    
    
    
    			 ?>



    模式修正符,放在正則表達式的最后面


    i,m,s,u,e
    i :忽略大写和小写
    m :视为多行
    s :视为一行
    u :贪婪模式,最大模式
    e :替换的时候用的,能够用函数加工,用于匹配正則表達式中的第一个圆括号



    <?php 
     $str = "Linux and php are lamp or linux is very  much";
    
    
     $ptn = '/linux/i';
    
    
     preg_match_all($ptn, $str,$mats);
    
    
     echo "<pre>";
     print_r($mats);
     echo "</pre>";
    
    
     ?>




     m样例
     m视为多行
     <?

    php $str = "Linux and php are lamp or linux is very much"; $ptn = '/^linux/im'; preg_match_all($ptn, $str,$mats); echo "<pre>"; print_r($mats); echo "</pre>"; ?

    >





    模式修正符


    <?php 
     $str = "Linux and php are lamp or 
    linux is very  much";
    
    
     $ptn = '/.*/s';
    
    
     preg_match_all($ptn, $str,$mats);
    
    
     echo "<pre>";
     print_r($mats);
     echo "</pre>";
    
    
     ?

    >







     e的使用
     
    <?php 
     $str = "123 php";
    
    
     $ptn = '/d+s(w+)/e';
    
    
     $rep = 'strtoupper($1)';
    
    
     // preg_match_all($ptn, $str,$mats);
    
    
     $str2 = preg_replace($ptn, $rep, $str);
    
    
     echo "<pre>";
     print_r($str2);
     echo "</pre>";
    
    
     ?

    >







    向后引用
     <?php 
     $str = "123 php";
    
    
     $ptn = '/(d+)(s)(w+)/';
    
    
     $rep = '$3$2$1';
    
    
     // preg_match_all($ptn, $str,$mats);
    
    
     $str2 = preg_replace($ptn, $rep, $str);
    
    
     echo "<pre>";
     print_r($str2);
     echo "</pre>";
    
    
     ?>


     


    五个经常使用函数


    1.字符串的匹配与替换
    preg_match();
    preg_match_all();
    preg_grep();做搜索


    2.字符串的替换
    preg_replace();


    3.字符串的切割
    preg_split();




    eval让字符串表达式可以运行


    preg_grep实例,做搜索:
     
    <?php 
     //比方代表文章
        $arr = array(
          "php html",
          " linux redhat rhce",
          "junzaivip test php",
        	);
    	 //须要搜索的内容
        $ptn = '/junzaivip/';
    
    
        //返回搜索到的内容
        $arr2 = preg_grep($ptn, $arr);
    
    
        echo "<pre>";
        print_r($arr2);
        echo "</pre>";
    
    
     ?

    >





     4.数学函数
      1.max();
      2.min();


      注意:1.多个数字,2,多个数字组成的数组
       
    <?

    php echo max(3,45,6,7); echo "<br>"; echo max(array(4,6,8,9)); ?

    >






    5.日期函数
    1.time();
    2.date(); //把时间戳转换为日期
    3.strtotime();//把日期转换为时间戳
    4.microtime();
    //calc打开计算器


    时间的起源点:
     
    <?php 
     echo time();
     echo "<hr>";
     echo date("Y-m-d H:i-s w t",0);
     ?>


     时间转换为时间戳
     
     <?

    php echo strtotime("2014-12-12"); ?>






     计算当前时间的详细日期:
      <?php 
     echo date("Y-m-d H:i:s",time()+8*3600);
    
    
     ?>




     通过改动时区来查找当前日期:
      <?php 
     //设置中国的时区为默认时区
     date_default_timezone_set("PRC");
     echo date("Y-m-d H:i:s",time());
    
    
     ?

    >





     注意:假设每一个改比較麻烦的话,就直接去改动php的配置文件php.ini文件,直接改动里面的date 找见timezone改动为PRC




     date參数:
     Y 2014  年全
     y 14    年仅仅有后两位
     m 03    月份有前导0
     n 3     月份没有前导0
     d 05 日期有前导0
     j 5     日期没有前导0
     H       24小时
     h       12小时
     i       05分钟 
     s       05秒
     w 0-6   周日到周六
     t 31    一月多少天
     L       是否为闰年


     //如何区分平润年
     可以被4整除,同一时候假设能被100整除的话,那就必须被400整除,此时它就是闰年
      
    <?php 
     //设置中国的时区为默认时区
    	 date_default_timezone_set("PRC");
    	 $y = "1900/1/1";
    	 $time = strtotime($y);
    
    
    
    
    	 echo date("L",$time);
    
    
     ?>




     microtime() 微秒


     计算脚本的执行时间:
      
    <?php 
     	$stime =  microtime(1);//注意这个位置必须用true,否者无法參与计算
    
    
     	sleep(1);
    
    
     	$etime =  microtime(1);
    
    
     	echo $etime - $stime;
    
    
     ?>




     实例:万年历


     万年历技术点
     1.几年几月几日
     2.周日到周六
     3.1号是星期几
     4.这个月有多少天
     5.下一年和上一年
     6.下一月和上一月


     万年历代码:
      
    <?

    php //改动字符编码 //header("content-type:text/html;charset=utf-8"); date_default_timezone_set("PRC"); //获取当前年 $year = $_GET['y']?$_GET['y']:date('Y'); //获取当前月 $month = $_GET['m']?

    $_GET['m']:date('m'); //获取获取当前月有多少天 $days = date('t',strtotime("{$year}-{$month}-1"));//里面必须用双引號 //当前一号是周几 $weeks = date('w',strtotime("{$year}-{$month}-1")); //全部有内容居中 echo "<center>"; //输出表头 echo "<h2>{$year}年{$month}月</h2>"; //输出日期表格 echo "<table width='700px' border='1px'>"; //输出第一行 echo "<tr>"; //表头单元格由th来创建 echo "<th>日</th>"; echo "<th>一</th>"; echo "<th>二</th>"; echo "<th>三</th>"; echo "<th>四</th>"; echo "<th>五</th>"; echo "<th>六</th>"; echo "</tr>"; //開始铺表格 for($i = 1 - $weeks;$i <= $days;){ echo "<tr>"; for ($j=0; $j < 7; $j++) { if ($i > $days || $i < 1) { echo "<td> </td>"; } else{ echo "<td>{$i}</td>"; } $i++; } echo "</tr>"; } echo "</table>"; //实现一下上一年和上一月 if($month == 1){ $prevyear = $year - 1; $prevmonth = 12; } else{ $prevyear = $year; $prevmonth = $month -1; } if($month == 12){ $nextyear = $year + 1; $nextmonth = 1; } else{ $nextyear = $year; $nextmonth = $month + 1; } //输出上一月和下一月的button echo "<h2><a href = 'index.php?y={$prevyear}&m={$prevmonth}'>上一月</a>|<a href='index.php?

    y={$nextyear}&m={$nextmonth}'>下一月</a></h2>"; echo "</center>"; ?

    >






    PHP的错误处理
    1.关闭和开启报错
    2.错误报告级别
    3.错误报告地方






    关闭和开启报错




    E_ALL
    E_ERROR //严重错误
    E_WARNING  //警告错误
    E_PARSE    //语法错误
    E_NOTICE //提示错误


    关闭错误
    display_error = off




    报什么级别的错:
    error_reporting = E_ALL
    error_reporting = E_ALL & ~E_NOTICE //报全部错误,可是除了提示错误


    报错地方:
    //是否从浏览器报错
    display_error = off


    //是否把错误输出到一个自己定义日志文件里
    log_errors = on


    error_log = d:phplogsphp.log

    转载请注明出处: http://blog.csdn.net/junzaivip



  • 相关阅读:
    Python爬虫重写。
    python threading
    问题8:手机端实现点击按钮时更换颜色(解决IOS不显示背景)
    问题7:JavaScript 常用正则示例
    常见问题6:控制台报错整理——报错
    常见问题5:图片与文字垂直居中
    bootstrap学习总结
    常见问题4:文本不能选择 效果
    常见问题3:自适应大小高度与宽度
    javascript——10章 DOM
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7064807.html
Copyright © 2020-2023  润新知