第一篇:PHP学习之输出控制函数
PHP学习之输出控制函数
PHP提供了一类比较特殊的函数,这类函数称为输出控制函数。输出控制函数可以用来控制脚本的输出。这些函数在某些特殊情况下很有用,特别是脚本中已经输出了信息之后,再想向浏览器发送头信息的情况。输出控制函数不会作用于 header()或 setcookie()函数发送的头信息,而只会影响类似于 echo,print输出的信息和嵌入在 PHP 代码之间的信息。
1、ob_start():打开输出缓冲区
函数原型:void ob_start(void)。此函数用于打开输出缓冲区。当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
2、ob_flush()
函数原型:void ob_flush(void)。这个函数将送出缓冲区的内容。
3、ob_end_clean()
函数原型:bool ob_end_clean(void)。此函数清空输出缓冲区的内容并关闭这个缓冲区。值得注意的是,这个函数不会发送缓冲区的内容,而是把缓冲区清空。
4、ob_clean()
函数原型:bool ob_end_clean(void)。此函数会将缓冲区内容清除,但不关闭缓冲,可继续向其中写入内容。
5、ob_end_flush()
函数原型:void ob_end_flush(void)。此函数发送缓冲区的内容到浏览器,并且关闭输出缓冲区。
6、ob_get_contents()
函数原型:string ob_get_contents(void)。这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE。
7、ob_get_length()
函数原型:int ob_get_length(void)。这个函数会返回当前缓冲区中的长度。
平时我们可能不常接触到输出控制函数,可是前面说了,输出控制函数是很有用的,比如可以解决诸如:Header had already send by!之类的header错误。
第二篇: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('/
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(”'
$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学习推荐
PHP学习推荐
PHP,是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,现在越来越多的人加入到了php的大家庭中,其中很多人只是浅尝辄止,为何会如此呢?最大的障碍莫过于学习的过程枯燥乏味,从而失去学习兴趣,那么小编就自己的经验来说说怎样学习php吧。
学习方法之视频教程
相对于读书来说,我更喜欢看视频学习,可能小编我对影像比文字记忆更加深刻吧。每看完一个视频教程,我都会闭上眼睛休息一会,把刚才看的内容消化消化,然后再开始练习刚才看过的内容,尽可能不边看边做,因为这样学的快同样也忘得快,如果实在想不起来的话,可以再打开教程看一遍,切记不可囫囵吞枣,好高骛远,要稳扎稳打,把你看过的教程切切实实的记在心里。只有一步一个脚印,你的学习之路才能走的更远,否则的话,你走的越远,越会觉的道路是如此艰辛,或许你就会放弃学习。那么都有哪些视频教程能帮我们学习php呢,小编我就为大家介绍几个吧:
php100
LAMP兄弟连
李炎恢的php
学习方法之看书: 1.《PHP与MySQL程序设计(第4版)》
2.《PHP Web 2.0 开发实战》
3.《PHP高级程序设计:模式、框架与测试》
4.《PHP 5 高级应用开发实践》
5.《细说php》
学习过程中不要死记语法,要多动手,多练习,当你遇到问题的时候,首先尝试自己解决。多用google,baidu,网络是一个大知识库,是最好的老师,你遇到的问题,别人也遇到过,多去搜索一下吧.多阅读别人的源代码,要看懂别人的设计思想,不断融为已用.
第五篇:不得不防的PHP危险函数
不得不防的PHP危险函数
用PHP语言建设网站,安全问题是每个PHP程序员必须考虑的问题,在PHP运用的过程中一些PHP危险函数却不得不防,南京PHP培训小编把PHP危险函数列出来,供大家参考。
phpinfo()功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。危险等级:中 passthru()功能描述:允许执行一个外部程序并回显输出,类似于 exec()。危险等级:高 exec()功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等)。危险等级:高 system()功能描述:允许执行一个外部程序并回显输出,类似于 passthru()。危险等级:高 chroot()功能描述:可改变当前 PHP 进程的工作根目录,仅当系统支持 CLI 模式 PHP 时才能工作,且该函数不适用于 Windows 系统。危险等级:高 scandir()功能描述:列出指定路径中的文件和目录。危险等级:中 chgrp()功能描述:改变文件或目录所属的用户组。危险等级:高 chown()功能描述:改变文件或目录的所有者。危险等级:高 shell_exec()功能描述:通过 Shell 执行命令,并将执行结果作为字符串返回。危险等级:高 proc_open()功能描述:执行一个命令并打开文件指针用于读取以及写入。危险等级:高 proc_get_status()功能描述:获取使用 proc_open()所打开进程的信息。危险等级:高 error_log()功能描述:将错误信息发送到指定位置(文件)。
安全备注:在某些版本的 PHP 中,可使用 error_log()绕过 PHP safe mode,执行任意命令。危险等级:低 ini_alter()功能描述:是 ini_set()函数的一个别名函数,功能与 ini_set()相同。具体参见 ini_set()。危险等级:高 ini_set()功能描述:可用于修改、设置 PHP 环境配置参数。危险等级:高 ini_restore()功能描述:可用于恢复 PHP 环境配置参数到其初始值。危险等级:高 dl()功能描述:在 PHP 进行运行过程当中(而非启动时)加载一个 PHP 外部模块。危险等级:高 pfsockopen()功能描述:建立一个 Internet 或 UNIX 域的 socket 持久连接。危险等级:高 syslog()功能描述:可调用 UNIX 系统的系统层 syslog()函数。危险等级:中 readlink()功能描述:返回符号连接指向的目标文件内容。危险等级:中 symlink()功能描述:在 UNIX 系统中建立一个符号链接。危险等级:高 popen()功能描述:可通过 popen()的参数传递一条命令,并对 popen()所打开的文件进行执行。
危险等级:高
stream_socket_server()功能描述:建立一个 Internet 或 UNIX 服务器连接。危险等级:中 putenv()功能描述:用于在 PHP 运行时改变系统字符集环境。在低于 5.2.6 版本的 PHP 中,可利用该函数
修改系统字符集环境后,利用 sendmail 指令发送特殊参数执行系统 SHELL 命令。危险等级:高