Maison >développement back-end >tutoriel php >php正则表达式模式匹配实例教程

php正则表达式模式匹配实例教程

WBOY
WBOYoriginal
2016-07-25 08:51:411015parcourir
  1. $sub = "bbs.it-home.org";

  2. $ptn = '/\w*\.\w*\.\w*/';

  3. // 正则表达式,元数据,返回的数据

  4. preg_match($ptn, $sub,$mats);
  5. echo "

    ";  
  6. print_r($mats);
  7. echo "";
  8. ?>
  9. //匹配ip
  10. $str = "my ip is 192.168.10.1sdjlfajdf192.178.39.4la";
  11. $ptn = '/\d+\.\d+\.\d+\.\d+/';

  12. preg_match_all($ptn, $str,$mats);
  13. echo "

    ";  
  14. print_r($mats);
  15. echo "";
  16. ?>

复制代码

模式修正符,放在正则表达式的最后面 i,m,s,u,e i :忽略大小写 m :视为多行 s :视为一行 u :贪婪模式,最大模式 e :替换的时候用的,可以用函数加工,用于匹配正则表达式中的第一个圆括号

  1. $str = "Linux and php are lamp or linux is very much";
  2. $ptn = '/linux/i';
  3. preg_match_all($ptn, $str,$mats);
  4. echo "
    ";  
  5. print_r($mats);
  6. echo "";
  7. ?>
复制代码

m例子 m视为多行

  1. $str = "Linux and php are lamp or \nlinux is very much";
  2. $ptn = '/^linux/im';
  3. preg_match_all($ptn, $str,$mats);
  4. echo "
    ";  
  5. print_r($mats);
  6. echo "";
  7. ?>
复制代码

模式修正符

  1. $str = "Linux and php are lamp or \nlinux is very much";
  2. $ptn = '/.*/s';
  3. preg_match_all($ptn, $str,$mats);
  4. echo "
    ";  
  5. print_r($mats);
  6. echo "";
  7. ?>
复制代码

e的使用

  1. $str = "123 php";
  2. $ptn = '/\d+\s(\w+)/e';
  3. $rep = 'strtoupper($1)';
  4. // preg_match_all($ptn, $str,$mats);
  5. $str2 = preg_replace($ptn, $rep, $str);
  6. echo "
    ";  
  7. print_r($str2);
  8. echo "";
  9. ?>
复制代码

向后引用

  1. $str = "123 php";
  2. $ptn = '/(\d+)(\s)(\w+)/';
  3. $rep = '$3$2$1';
  4. // preg_match_all($ptn, $str,$mats);
  5. $str2 = preg_replace($ptn, $rep, $str);
  6. echo "
    ";  
  7. print_r($str2);
  8. echo "";
  9. ?>
复制代码

五个常用函数 1.字符串的匹配与替换 preg_match(); preg_match_all(); preg_grep();做搜索 2.字符串的替换 preg_replace(); 3.字符串的分割 preg_split(); eval让字符串表达式能够执行 preg_grep实例,做搜索:

  1. //比如代表文章
  2. $arr = array(
  3. "php html",
  4. " linux redhat rhce",
  5. "junzaivip test php",
  6. );
  7. //需要搜索的内容
  8. $ptn = '/junzaivip/';
  9. //返回搜索到的内容
  10. $arr2 = preg_grep($ptn, $arr);
  11. echo "
    ";  
  12. print_r($arr2);
  13. echo "";
  14. ?>
复制代码

4.数学函数 1.max(); 2.min(); 注意:1.多个数字,2,多个数字组成的数组

  1. echo max(3,45,6,7);
  2. echo "
    ";
  3. echo max(array(4,6,8,9));
  4. ?>
复制代码

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

  1. //calc打开计算器
  2. 时间的起源点:
  3. echo time();
  4. echo "
    ";
  5. echo date("Y-m-d H:i-s w t",0);
  6. ?>
复制代码

时间转换为时间戳

  1. cho strtotime("2014-12-12");
  2. ?>
复制代码

计算当前时间的具体日期:

  1. echo date("Y-m-d H:i:s",time()+8*3600);
  2. ?>
复制代码

通过修改时区来查找当前日期:

  1. //设置中国的时区为默认时区
  2. date_default_timezone_set("PRC");
  3. echo date("Y-m-d H:i:s",time());
  4. ?>
复制代码

注意:如果每个改比较麻烦的话,就直接去修改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整除,此时它就是闰年

  1. //设置中国的时区为默认时区

  2. date_default_timezone_set("PRC");
  3. $y = "1900/1/1";
  4. $time = strtotime($y);
  5. echo date("L",$time);

  6. ?>
复制代码

microtime() 微秒

计算脚本的运行时间:

  1. $stime = microtime(1);//注意这个位置必须用true,否者无法参与计算
  2. sleep(1);
  3. $etime = microtime(1);
  4. echo $etime - $stime;
  5. ?>
复制代码

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

  1. //修改字符编码

  2. //header("content-type:text/html;charset=utf-8");
  3. date_default_timezone_set("PRC");
  4. //获取当前年
  5. $year = $_GET['y']?$_GET['y']:date('Y');
  6. //获取当前月
  7. $month = $_GET['m']?$_GET['m']:date('m');
  8. //获取获取当前月有多少天
  9. $days = date('t',strtotime("{$year}-{$month}-1"));//里面必须用双引号
  10. //当前一号是周几
  11. $weeks = date('w',strtotime("{$year}-{$month}-1"));
  12. //所有有内容居中
  13. echo "
    ";
  14. //输出表头
  15. echo "

    {$year}年{$month}月

    ";
  16. //输出日期表格
  17. echo "";
  18. //输出第一行
  19. echo "
  20. ";
  21. //表头单元格由th来创建
  22. echo "
  23. ";
  24. echo "
  25. ";
  26. echo "
  27. ";
  28. echo "
  29. ";
  30. echo "
  31. ";
  32. echo "
  33. ";
  34. echo "
  35. ";
  36. echo "
  37. ";
  38. //开始铺表格
  39. for($i = 1 - $weeks;$i echo "
  40. ";
  41. for ($j=0; $j if ($i > $days || $i echo "
  42. ";
  43. } else{
  44. echo "
  45. ";
  46. }
  47. $i++;
  48. }
  49. echo "
  50. ";
  51. }
  52. echo "

  53. {$i}
    ";
  54. //实现一下上一年和上一月
  55. if($month == 1){
  56. $prevyear = $year - 1;
  57. $prevmonth = 12;
  58. } else{
  59. $prevyear = $year;
  60. $prevmonth = $month -1;
  61. }
  62. if($month == 12){
  63. $nextyear = $year + 1;
  64. $nextmonth = 1;
  65. } else{
  66. $nextyear = $year;
  67. $nextmonth = $month + 1;
  68. }
  69. //输出上一月和下一月的按钮

  70. echo "

    上一月|下一月

    ";
  71. echo "
  72. ";
  73. ?>
复制代码

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

1)、关闭和开启报错 E_ALL E_ERROR //严重错误 E_WARNING //警告错误 E_PARSE//语法错误 E_NOTICE //提示错误

2)、关闭错误 display_error = off 报什么级别的错:

error_reporting = E_ALL error_reporting = E_ALL & ~E_NOTICE //报所有错误,但是除了提示错误

3)、报错地方:

//是否从浏览器报错 display_error = off //是否把错误输出到一个自定义日志文件中 log_errors = on error_log = d:\phplogs\php.log


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn