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:词边缘

\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

时间: 2024-10-01 23:58:47

PHP第九课 正則表達式在PHP中的使用的相关文章

JAVA学习第六十五课 — 正則表達式

正則表達式:主要应用于操作字符串.通过一些特定的符号来体现 举例: QQ号的校验 6~9位.0不得开头.必须是数字 String类中有matches方法 matches(String regex) 告知此字符串是否匹配给定的正則表達式. regex,就是给定的正則表達式 public static void checkQQ() { //第一位是数字1-9,第二位以后是0-9,除去第一位数剩下数字位数范围是5到8位 String regex = "[1-9][0-9]{5,8}";//正

JavaScript正則表達式知识汇总

Js 正則表達式知识汇总 正則表達式: 1.什么是RegExp?RegExp是正則表達式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegExp(); 3.RegExp 对象有 3 个方法: 1)test()检索字符串中的指定值,返回值是true或false. var p1=new Reg("e"); document.write(Reg.test("welcome to China!")); 2)exec

JavaScript使用正則表達式

2.0 简单介绍 正則表達式是能够用来查找与给定模式匹配的文本的搜索模式.比如,在上一章中,我们在一个较长的字符串中查找子字符串Cookbook: var testValue = "This is the Cookbook's test string"; var subsValue = "Cookbook"; var iValue = testValue.indexOf(subsValue); //返回值12.即子字符串的索引 这段代码有效.由于我们要查找一个严格的

iOS正則表達式(一)

什么是正則表達式? 正則表達式是对字符串操作的一种逻辑公式. 作用? 在iOS开发中我们通常使用正則表達式来匹配给定的字符串是否符合我们的业务逻辑,比方说用户注冊帐号仅仅能是手机号或者邮箱等.我们还能够使用正則表達式来从一段字符串其中截取我们须要的字符串,比方说网页源代码中我们须要截取某些个图片地址等.总得来说.在iOS开发中正則表達式的作用有两点: 1. 检測给定的字符串是否符合业务逻辑 2. 从目标字符串中获取我们想要的特定字符串 怎样在OC中使用正則表達式? 1.利用NSPredicate

正則表達式学习參考

正則表達式学习參考 1       概述 正則表達式(Regular Expression)是一种匹配模式,描写叙述的是一串文本的特征. 正如自然语言中“高大”.“牢固”等词语抽象出来描写叙述事物特征一样,正則表達式就是字符的高度抽象,用来描写叙述字符串的特征. 正則表達式(下面简称正则,Regex)通常不独立存在,各种编程语言和工具作为宿主语言提供对正则的支持,并依据自身语言的特点,进行一定的剪裁或扩展. 正则入门非常easy,有限的语法规则非常easy掌握,可是眼下正则的普及率并不高,主要是

三个月-见识菜鸟的每天的成长(js正則表達式&amp;amp;&amp;amp;phpmail的收发)

今天写了一段JS验证.就是涉及一个数据的合法性验证. 就是核心就是正則表達式.其它都是细节的东西,可是细节的东西非常重要. 今天犯了一个特么2B的错误,在js的function函数里面,alert字符的时候.用的双引號.导致程序跑步起来出错. 整整困扰了自己一个上午.才发现原来是这个小细节没有注意.总而言之.还是自己实力不济.得提高. 以下普及一下正則表達式跟JS基本的语法规则. 首先正則表達式,依据2/8定理,百分之二十的表达式是在百分之八十中用到的,其它的不用管. 略微了解一下即可. 最重要

javascript中的正則表達式

对文本数据进行操作是JavaScript中常见的任务.正則表達式通过同意程序猿指定字符串匹配的模式来简化诸如验证表单中输入是否具有正确格式之类的任务. 1.正則表達式标记: 字符 含义 举例 i 大写和小写不敏感 对于模式/http/i  "http" 和"HttP" 一样能够匹配 g 全局匹配.找出所有匹配字符串,而不不过找到第一个就返回. 经常使用于替换 m 多行匹配 2.正則表達式位置指示符:规定模式在它所匹配的字符串里的位置. 字符 含义 举例 ^ 开头 对

经验之谈—正則表達式实现图文混排

在项目中,我们常常须要发表情,以及常常须要将表情字符转换成表情.由于表情是一个图片.所以我们发给server的时候,实际上是发一段特殊的文字给server,然后转换成表情.以免浪费用户过多的流量. 那接下来.我们就来介绍一下,怎样使用正則表達式实现图文混排呢? 为了以后的代码的管理方便,我们抽取出两个类: NSString+Regular.h中.我们暴露两个方法出来: /** * 返回正則表達式匹配的第一个结果 * * @param pattern 正則表達式 * * @return 匹配的第一

HDU-1039-Easier Done Than Said?(Java &amp;amp;&amp;amp; 没用正則表達式是我的遗憾.....)

Easier Done Than Said? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9845    Accepted Submission(s): 4784 Problem Description Password security is a tricky thing. Users prefer simple password