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

來源:互聯網
上載者:User

標籤:err   如何   order   輸出   當前日期   utf-8   print   同名   report   

今天內容
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:詞邊緣
\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 \nlinux 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 \nlinux 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:\phplogs\php.log

轉載請註明出處: http://blog.csdn.net/junzaivip



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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.