PHP 正则表达式常用函数使用小结(样例5)

时间:2019-05-13 18:08:25下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《PHP 正则表达式常用函数使用小结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《PHP 正则表达式常用函数使用小结》。

第一篇:PHP 正则表达式常用函数使用小结

学习php正则的朋友不得不了解的一些函数,总结下php下正则表达式的调用方法。在PHP中有两套正则表达式函数库。一套是由PCRE(Perl Compatible Regular Expression)库提供的。PCRE库使用和Perl相同的语法规则实现了正则表达式的模式匹配,其使用以“preg_”为前缀命名的函数。另一套是由POSIX(Portable Operation System interface)扩展库提供的。POSIX扩展的正则表达式由POSIX 1003.2定义,一般使用以“ereg_”为前缀命名的函数。

两套函数库的功能相似,执行效率稍有不同。一般而言,实现相同的功能,使用PCRE库的效率略占优势。下面详细介绍其使用方法。

6.3.1 正则表达式的匹配

1.preg_match()

函数原型:int preg_match(string $pattern, string $content [, array $matches])preg_match()函数在$content字符串中搜索与$pattern给出的正则表达式相匹配的内容。如果提供了$matches,则将匹配结果放入其 中。$matches[0]将包含与整个模式匹配的文本,$matches[1]将包含第一个捕获的与括号中的模式单元所匹配的内容,以此类推。该函数只 作一次匹配,最终返回0或1的匹配结果数。代码6.1给出preg_match()函数的一段代码示例。

代码6.1 日期时间的匹配

代码如下:

//需要匹配的字符串。date函数返回当前时间

$content = “Current date and time is ”.date(“Y-m-d h:i a”).“, we are learning PHP together.”;

//使用通常的方法匹配时间

if(preg_match(“/d{4}-d{2}-d{2} d{2}:d{2} [ap]m/”, $content, $m)){

echo “匹配的时间是:”.$m[0].“n”;}

//由于时间的模式明显,也可以简单的匹配

if(preg_match(“/([d-]{10})([d:]{5} [ap]m)/”, $content, $m)){

echo “当前日期是:”.$m[1].“n”;echo “当前时间是:”.$m[2].“n”;} ?>

这是一个简单动态文本串匹配实例。假设当前系统时间是“2006年8月17日13点25分”,将输出如下的内容。

匹配的时间是:2006-08-17 01:25 pm 当前日期是:2006-08-17 当前时间是:01:25 pm 2.ereg()和eregi()

ereg()是POSIX扩展库中正则表达式的匹配函数。eregi()是ereg()函数的忽略大小写的版 本。二者与preg_match的功能类似,但函数返回的是一个布尔值,表明匹配成功与否。需要说明的是,POSIX扩展库函数的第一个参数接受的是正则 表达式字符串,即不需要使用分界符。例如,代码6.2是一个关于文件名安全检验的方法。

代码6.2 文件名的安全检验

代码如下:

//对文件名进行过滤,以保证系统安全

if(!ereg('^[^./][^/]*$', $userfile)){

die('这不是一个非法的文件名!');}

//对用户名进行过滤

if(!ereg('^[^./][^/]*$', $username)){

die('这不是一个无效的用户名');}

//通过安全过滤,拼合文件路径

$thefile = “/home/$username/$filename”;?>

通常情况下,使用与Perl兼容的正则表达式匹配函数perg_match(),将比使用ereg()或eregi()的速度更快。如果只是查找一个字符串中是否包含某个子字符串,建议使用strstr()或strpos()函数。

3.preg_grep()

函数原型:array preg_grep(string $pattern, array $input)

preg_grep()函数返回一个数组,其中包括了$input数组中与给定的$pattern模式相匹配的单元。对于输入数组$input中的每个元素,preg_grep()也只进行一次匹配。代码6.3给出的示例简单地说明了preg_grep()函数的使用。

代码6.3 数组查询匹配 代码如下:

$subjects = array(“Mechanical Engineering”, “Medicine”, “Social Science”, “Agriculture”, “Commercial Science”, “Politics”);

//匹配所有仅由有一个单词组成的科目名

$alonewords = preg_grep(“/^[a-z]*$/i”, $subjects);?>

6.3.2 进行全局正则表达式匹配

1.preg_match_all()

与preg_match()函数类似。如果使用了第三个参数,将把所有可能的匹配结果放入。本函数返回整个模 式匹配的次数(可能为0),如果出错返回False。下面是一个将文本中的URL链接地址转换为HTML代码的示例。代码6.4是 preg_match_all()函数的使用范例。

代码6.4 将文本中的链接地址转成HTML

代码如下:

//功能:将文本中的链接地址转成HTML //输入:字符串

//输出:字符串

function url2html($text){

//匹配一个URL,直到出现空白为止

preg_match_all(“/http://?[^s]+/i”, $text, $links);//设置页面显示URL地址的长度

$max_size = 40;

foreach($links[0] as $link_url){

//计算URL的长度。如果超过$max_size的设置,则缩短。

$len = strlen($link_url);if($len > $max_size){

$link_text = substr($link_url, 0, $max_size).“...”;} else {

$link_text = $link_url;}

//生成HTML文字

$text = str_replace($link_url,“$link_text”,$text);}

return $text;}

//运行实例

$str = “这是一个包含多个URL链接地址的多行文字。欢迎访问http://www.xiexiebang.com“,);

//输出模式替换结果

print preg_replace($patterns, $replacements, $string);?>

输出结果如下。

Name: Thomas Ching”, Email: tom@emailaddress.com

Address: No.5, Wilson St., New York, U.S.A

在preg_replace的正则表达式中可以使用模式修正符“e”。其作用是将匹配结果用作表达式,并且可以进行重新运算。例如:

代码如下:

$html_body = “

TEST

My Picture

第二篇:PHP的构造函数-php教程

PHP的构造函数

本php教程主要学习PHP的构造函数。

在面向对象编程中有个很特别的函数,这个函数称为构造函数,是对象被创建时自动调用的方法,用来完成类初始化的工作。因为只要PHP的类一加载就会自动执行此函数,一般初始化的工作都放在此函数中。

1.构造函数和其它函数一样,可以传递参数,可以设定参数默认值。

2.构造函数可以调用属性,可以调用方法。

3.构造函数可以被其它方法显式调用。

在之前的PHP版本中,构造函数使用和类名同名来进行对象的初始化工作,但后面发现如果要更改类名,同时就要更改它的构造方法,所以在PHP5中,就被用__construct()函数来实现.__construct()前面是两个下划线组成,不要以为是一个下划线.与构造函数相对应的是析构函数.当某个对象成为垃圾或者当对象被显式销毁时执行。__destruct()析构函数,是在垃圾对象被回收时执行。

1.不要在程序中调用一个对象的析构函数。

2.析构函数不能带有参数。

3.通常在程序结束后PHP会自动执行垃圾回收。

在这里有个问题先提下,因为我们创建一个类,有时候会有多个实例,那么构造函数是怎么进行调用的呢。php的构造函数调用是从自身向上查找,执行最近的一个来进行调用。

关于这个构造函数在以后再进行补充吧,它的基本知识点就这些吧,相信在遇到__construct()等莫名的函数而不知所措了。至于它的实际应用到时候再说吧,今天就不举例了,好不容易今天不要上班,难得呀。

第三篇:php开发中常用函数总结

php开发中常用函数总结

1.获取IP2.时间的增加3.检查日期是否合法日期4.时间比较函数,返回两个日期相差几秒、几分钟、几小时或几天5.PHP重定向6.获取访问者浏览器7.获取访问者操作系统8.文件格式类9.php生成excel文档10.时间比较问题11.提取页面和浏览器提交的变量,作用相当于使PHP.INI开了全局变量12.读取文件函数13.写入文件函数14.页面快速转向15.产生随机字符串函数16.截取一定长度的字符串(该函数对GB2312使用有效)17.取得客户端IP地址18.判断邮箱地址19.分页(两个函数配合使用)20.获取新插入数据的ID21.获得当前的脚本网址22.把全角数字转为半角数字23.去除HTML标记24.相对路径转化成绝对路径26.取得所有链接27.HTML表格的每行转为CSV格式数组28.将HTML表格的每行每列转为数组,采集表格数据29.返回字符串中的所有单词 $distinct=true 去除重复30.打印出为本PHP项目做出贡献的人员的清单

function GetIP(){ //获取IP

if($_SERVER[“HTTP_X_FORWARDED_FOR”])

$ip = $_SERVER[“HTTP_X_FORWARDED_FOR”];

else if($_SERVER[“HTTP_CLIENT_IP”])

$ip = $_SERVER[“HTTP_CLIENT_IP”];

else if($_SERVER[“REMOTE_ADDR”])

$ip = $_SERVER[“REMOTE_ADDR”];

else if(getenv(“HTTP_X_FORWARDED_FOR”))

$ip = getenv(“HTTP_X_FORWARDED_FOR”);

else if(getenv(“HTTP_CLIENT_IP”))

$ip = getenv(“HTTP_CLIENT_IP”);

else if(getenv(“REMOTE_ADDR”))

$ip = getenv(“REMOTE_ADDR”);

else

$ip = “Unknown”;

return $ip;}?>{downsource}

$dateArr = explode(“-”, $date);$value[$unit] = $int;return date(“Y-m-d”, mktime(0,0,0, $dateArr[1] + $value['m'], $dateArr[2] + $value['d'], $dateArr[0] + $value['y']));}function GetWeekDay($date){ //计算出给出的日期是星期几

$dateArr = explode(“-”, $date);return date(“w”, mktime(0,0,0,$dateArr[1],$dateArr[2],$dateArr[0]));}?>{downsource}

$dateArr = explode(“-”, $date);if(is_numeric($dateArr[0])&& is_numeric($dateArr[1])&& is_numeric($dateArr[2])){ return checkdate($dateArr[1],$dateArr[2],$dateArr[0]);} return false;}function check_time($time){ //检查时间是否合法时间

$timeArr = explode(“:”, $time);if(is_numeric($timeArr[0])&& is_numeric($timeArr[1])&& is_numeric($timeArr[2])){ if(($timeArr[0] >= 0 && $timeArr[0] <= 23)&&($timeArr[1] >= 0 && $timeArr[1] <= 59)&&($timeArr[2] >= 0 && $timeArr[2] <= 59))return true;else return false;} return false;}function DateDiff($date1, $date2, $unit = “"){ //时间比较函数,返回两个日期相差几秒、几分钟、几小时或几天

switch($unit){ case 's': $dividend = 1;break;case 'i': $dividend = 60;break;case 'h': $dividend = 3600;break;case 'd': $dividend = 86400;break;default: $dividend = 86400;} $time1 = strtotime($date1);$time2 = strtotime($date2);if($time1 && $time2)return(float)($time11;mt_srand((double)microtime()* 1000000);for($i = 0;$i < $length;$i++){ $hash.= $chars[mt_rand(0, $max)];}return $hash;}?>{downsource}截取一定长度的字符串(该函数对GB2312使用有效) $length){ if($sss){ $length=$length-3;$addstr=@#...@#;} for($i = 0;$i < $length;$i++){ if(ord($string[$i])> 127){ $wordscut.= $string[$i].$string[$i + 1];$i++;} else { $wordscut.= $string[$i];} } return $wordscut.$addstr;}return $string;}?>{downsource}取得客户端IP地址{downsource}判断邮箱地址{downsource}分页(两个函数配合使用)

global $page,$totalpage;$out=”共“.$totalpage.”页 “;$linkNum =4;$start =($page-round($linkNum/2))>0 ?($page-round($linkNum/2)): ”1“;$end =($page+round($linkNum/2))<$totalpage ?($page+round($linkNum/2)): $totalpage;$prestart=$start-1;$nextend=$end+1;if($page<>1)$out.= ”第一页 “;if($start>1)$out.=”..<< “;for($t=$start;$t<=$end;$t++){ $out.=($page==$t)? ”[“.$t.”] “ : ”$t “;}if($end<$totalpage)$out.=”>>..“;if($page<>$totalpage)$out.= ” 最后页“;return $out;}?>{downsource}获取新插入数据的ID{downsource}//获得当前的脚本网址

if(empty($_SERVER[”QUERY_STRING“]))$nowurl = $scriptName;else $nowurl = $scriptName.”?“.$_SERVER[”QUERY_STRING“];} return $nowurl;}?>{downsource}//把全角数字转为半角数字{downsource}//去除HTML标记“,”>“,$txt);$txt = preg_replace(”/[rn]{1,}/isU“,”rn“,$txt);return $txt;}?>{downsource}//相对路径转化成绝对路径

preg_match('/(http|https|ftp):///', $feed_url, $protocol);$server_url = preg_replace(”/(http|https|ftp|news):///“, ”“, $feed_url);

$server_url = preg_replace(”//.*/“, ”“, $server_url);

if($server_url == ''){

return $content;

}

if(isset($protocol[0])){

$new_content = preg_replace('/href=”//', 'href=“'.$protocol[0].$server_url.'/', $content);

$new_content = preg_replace('/src=”//', 'src=“'.$protocol[0].$server_url.'/', $new_content);

} else {

$new_content = $content;

}

return $new_content;} ?>{downsource}//取得所有链接

preg_match_all('/“' ]+)[”|']?s*[^>]*>([^>]+)/i',$code,$arr);

return array('name'=>$arr[2],'url'=>$arr[1]);}?>{downsource}//HTML表格的每行转为CSV格式数组]*?>'si”,'“',$table);$table = str_replace(”“,'”,',$table);$table = str_replace(“”,“{tr}”,$table);//去掉 HTML 标记

$table = preg_replace(“'<[/!]*?[^<>]*?>'si”,“",$table);//去掉空白字符

$table = preg_replace(”'([rn])[s]+'“,”“,$table);$table = str_replace(” “,”“,$table);$table = str_replace(” “,”“,$table);$table = explode(”,{tr}“,$table);

array_pop($table);return $table;}?>{downsource}//将HTML表格的每行每列转为数组,采集表格数据]*?>'si“,”“,$table);$table = preg_replace(”']*?>'si“,”“,$table);$table = preg_replace(”']*?>'si“,”“,$table);$table = str_replace(”“,”{tr}“,$table);$table = str_replace(”“,”{td}“,$table);//去掉 HTML 标记

$table = preg_replace(”'<[/!]*?[^<>]*?>'si“,”“,$table);//去掉空白字符

$table = preg_replace(”'([rn])[s]+'“,”“,$table);$table = str_replace(” “,”“,$table);$table = str_replace(” “,”“,$table);

$table = explode('{tr}', $table);

array_pop($table);foreach($table as $key=>$tr){ $td = explode('{td}', $tr);array_pop($td);$td_array[] = $td;} return $td_array;}?>{downsource}//返回字符串中的所有单词 $distinct=true 去除重复{downsource}//打印出为本PHP项目做出贡献的人员的清单 //生成随机密码function randStr($len=6){//用来产生密码的字符串$chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789';$password=”";while(strlen($password)<$len)

$password.=substr($chars,(mt_rand()%strlen($chars)),1);return $password;

}

第四篇:学习使用PHP数组

如果你有很大的一个数组,而所要完成的仅是找出一个存在的给定值,你可以使用in_array()以返回true 或 false。如下代码将输出“Not found in this array”——因为你将在$namesArray中寻找一个并不存在的“Alber ”。

如果你改变了$lookingFor的值,将其变为“Mary”,你将得到消息“You've found it!”——因为“Mary”是$namesArray的一部分。如果希望对数组元素计数,你可以使用count()函数:

$count值将为7。

你可以对任何数组添加元素,无论是在已存在数组的开始或末尾。你也可以使用函数以创建一个包含两个或多个数组元素的新数组。合并时每个数组将按需要的顺序排列。如果你的数组已经有内部的排序,你需要对新的合并数组重排序。让我们从对已存在数组的末尾增添元素开始,使用函数array_push(): ” ?> 这将显示: 0 : apple 1 : orange 2 : banana 3 : kiwi 4 : pear 5 : grape 6 : pineapple 7 : tomato 当你需要对数组开头添加元素时,代码非常类似。不同处只是函数名:array_unshift()而不是array_push()。” ?> 这将显示: 0 : grape 1 : pineapple 2 : tomato 3 : apple 4 : orange 5 : banana 6 : kiwi 7 : pear 函数array_merge()合并两个或更多的数组。” ?> 这将显示: 0 : apple 1 : orange 2 : banana 3 : kiwi 4 : pear 5 : carrot 6 : green bea 7 : asparagu 8 : artichoke 9 : cor 现在已经对数组进行了增加元素和合并,现在来练习删除元素函数。你可以使用函数array_pop()从一数组末尾删除一个元素。如果使用函数 array_shift(),则从一数组开头删除一个元素。而实际上当你从数组删除元素时,此元素对你而言仍然可用——当你从已存在的数组中对元素进行 pop 或 shift时。使用array_pop()函数从数组末尾删除一个值: ” echo “
and finally, in $popped: $popped” ?> 这将显示: 0 : apple 1 : orange 2 : banana 3 : kiwi and finally, in $popped: pear Next, delete an element from the end of an array: ??????????? 下面,从数组末尾删除某值: ” echo “
and finally, in $shifted: $shifted” ?> 这将显示: 0 : orange 1 : banana 2 : kiwi 3 : pear and finally, in $shifted: apple 有很多函数可以帮助你对数组元素排序。但我将会演示基本的排序以帮助你了解其过程:

” ?> 这将显示: 0 : apple 1 : banana 2 : kiwi 3 : orange 4 : pear

第五篇:EXCEL IF函数怎么使用

EXCEL IF函数怎么使用(使用举例子)if函数可以嵌套七层,我简单举统计成绩中用到的一种写法:

if(a1>=90,“优秀”,if(a1>=60,“及格”,“不及格”)

其中a1要看你要分析的单元格的地址,这里只是举例罢了,实际应用还要看你的需要,分析完以后可以用填充柄填充下面的单元格,公式会自动在大于或等于90分的旁边写上优秀两字,在大于等于60分小于90分旁边的单无格写上及格,低于60分的写上不及格.如果你是用插入函数的话,选择if会出现三个格.第一格填入:a1>=90 第二格填入:优秀

第三格填入:if(a1>=60,“及格”,“不及格”)

希望这个对你的考试有所帮助.1.IF函数的语法结构

IF函数的语法结构:IF(条件,结果1,结果2),详细说明可以参照表6-4。

2.IF函数的功能

对满足条件的数据进行处理,条件满足则输出结果1,不满足则输出结果2。可以省略结果1或结果2,但不能同时省略。

3.条件表达式

把两个表达式用关系运算符(主要有=,<>,>,<,>=,<=等6个关系运算符)连接起来就构成条件表达式,例如,在IF(a1+b1+50 <> b1+c1 50, 1,1)函数式中,条件表达式是a1+b1+50 <> b1+c1 50。

4.执行过程

下面以IF(a1+b1+50 <> b1+c1 50, 1,1)函数式为例来说明IF函数的执行过程。

先计算条件表达式a1+b1+50 <> b1+c1 50,如果表达式成立,值为TRUE,并在函数所在单元格中显示“ 1”;如果表达式不成立,值为FALSE,并在函数所在单元格中显示“1”。

5.IF函数嵌套的执行过程

如果按等级来判断某个变量,IF函数的格式如下:

IF(E2>=85,“优”,IF(E2>=75,“良”,IF(E2>=60,“及格”,“不及格”)))

函数从左向右执行。首先计算E2>=85,如果该表达式成立,则显示“优”,如果不成立就继续计算E2>=75,如果该表达式成立,则显示“良”,否则继续计算E2>=60,如果该表达式成立,则显示“及格”,否则显示“不及格”。.6.IF 函数多个条件。

如果有多个条件,只要满足其中一个条件满足,就返回第一个值,否则返回第二个值。其公式为:IF(OR(条件1,条件2,条件3,条件4),”返回的第一个值”, “返回的第二个值”)如:IF(OR(W9>=70,X9>=108,(X9+2*Y9+2*Z9)>=165),“LTL”,“UPS”)

下载PHP 正则表达式常用函数使用小结(样例5)word格式文档
下载PHP 正则表达式常用函数使用小结(样例5).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    不得不防的PHP危险函数

    不得不防的PHP危险函数 用PHP语言建设网站,安全问题是每个PHP程序员必须考虑的问题,在PHP运用的过程中一些PHP危险函数却不得不防,南京PHP培训小编把PHP危险函数列出来,供大家参......

    PHP中时间和日期函数总结

    PHP中时间和日期函数总结 2007-11-29 00:40:28 标签:php 时间 日期函数 PHP中所有函数都是UNIX纪元的,即从1970年1月1日开始的。日期是从这个时候开始的秒数。当一个函数调用......

    PHP学习之输出控制函数

    PHP学习之输出控制函数PHP提供了一类比较特殊的函数,这类函数称为输出控制函数。输出控制函数可以用来控制脚本的输出。这些函数在某些特殊情况下很有用,特别是脚本中已经输出......

    小结函数对称性

    小 结 函 数 对 称 性 数学组 刘宏博 函数是中学数学教学的主线,是中学数学的核心内容,也是整个高中数学的基础.函数的性质是竞赛和高考的重点与热点,函数的对称性是函数的一......

    Excel函数的使用

    13Excel函数的使用 1. 填充日期。根据借贷日期和期限填充还贷日。 填充函数: 2. ,填充“总评”列,总分高于(大于等于)平均分的20%时,为“优秀”,高于(大于等于)平均分的10%时为“良好......

    如何使用Excel的函数范文大全

    《使用函数计算和统计数据》教案 2011-6-18 中卫市第三中学 宋晓荣 一、教学目标: 1. 知识目标:学生能理解函数的概念,掌握常见的函数(sum,average,contif)。学生能够根据所学函数......

    《使用函数》教学设计

    《使用函数》教学设计 一、教材分析: 本节课是前一节《使用公式》的延伸,编写的目的就是通过Excel电子表格实例中求平均值、求最大值和最小值、求优秀率四个函数的使用,让学生......

    可测函数小结

    可测函数 (一)可测函数的定义 1、在可测函数定义的学习过程中,对于可测函数的表示:a∈R, 有{x | > a}可测,则f(x) 可测 ;用简单间函数列来表示:有简单函数列{φn},f(x) 满足limφn......