首页 > php代码

PHP中的ob_start()

在PHP编程中, 我们经常会遇到一些直接产生输出的函数, 如passthru(),readfile(), var_dump() 等. 但有时我们想把这些函数的输出导入到文件中,或者先经过处理再输出, 或者把这些函数的输出作为字符串来处理.
  这时我们就要用到 Output Buffer(输出缓冲) 函数了.

处理输出缓冲的函数主要有这么几个:

ob_start() 开始输出缓冲, 这时PHP停止输出, 在这以后的输出都被转到一个内部的缓冲里.

ob_get_contents() 这个函数返回内部缓冲的内容. 这就等于把这些输出都变成了字符串.

ob_get_ length() 返回内部缓冲的长度.

ob_end_flush() 结束输出缓冲, 并输出缓冲里的内容. 在这以后的输出都是正常输出.

ob_end_clean() 结束输出缓冲, 并扔掉缓冲里的内容.

  举个例子, var_dump()函数输出一个变量的结构和内容, 这在调试的时候很有用.
但如果变量的内容里有 < , > 等HTML的特殊字符, 输出到网页里就看不见了. 怎么办呢?
用输出缓冲函数能很容易的解决这个问题.

ob_start();
var_dump($var);
$out = ob_get_contents();
ob_end_clean();


这时var_dump()的输出已经存在 $out 里了. 你可以现在就输出:

echo ''<pre>'' . htmlspecialchars($out) . ''</pre>'' ;

或者等到将来, 再或者把这个字符串送到模板(Template)里再输出

阅读全文

PHP中的日期和时间函数

1)date
用法:
date(格式,[时间]);
如果没有时间参数,则使用当前时间.
格式是一个字符串,其中以下字符有特殊意义:
U 替换成从一个起始时间(好象是1970年1月1日)以来的秒数
Y 替换成4位的年号.
y 替换成2位的年号.
F 替换成月份的英文全称.
M 替换成月份的英文简称.
m 替换成月份数.
z 替换成从当年1月1日以来的天数.
d 替换成日数.
l 替换成星期几的英文全称.
D 替换成星期几的英文简称.
w 替换成星期几(数字).
H 替换成小时数(24小时制).
h 替换成小时数(12小时制).
i 替换成分钟数.
s 替换成秒数.
A 替换成"AM"或"PM".
a 替换成"am"或"pm".
S 替换成序数字后缀,例如:"st","nd","rd","th".
函数返回作过了替换的格式串.
(2)getdate(时间)
返回一个哈希表,各下标是:
"seconds" -- 秒数
"minutes" -- 分数
"hours" -- 小时数
"mday" -- 日数
"mon" -- 月份数
"year" -- 年号
"yday" -- 1月1日以来的天数
"weekday" -- 星期几,英文全称
"month" -- 月份,英文全名
(3)gmdate
与date类似,但先将时间转换成格林威治标准时.
(4)mktime
用法:
mktime(小时数,分数,秒数,月,日,年);
返回一个时间值,可用于其他函数.
(5)time
用法:
time();
返回1970年1月1日零点以来的秒数.
(6)microtime
用法:
microtime();
返回一个字符串,用空格分成两部分,后一部分相当于time()
的返回值,前一部分是微秒数.
(7)checkdate
用法:
checkdate(月,日,年);
返回逻辑真或逻辑假.
如果:
[1]年在1900和32767之间(包括1900与32767);
[2]月在1到12之间;
[3]日在该月的允许日数范围内(考虑了闰年);
则返回逻辑真.
(8)set_time_limit
用法:
set_time_limit(秒数);
规定从该句运行时起程序必须在指定秒数内运行结束,
超时则程序出错退出.

例子 1. mktime() 例子

mktime() 在做日期计算和验证方面很有用,它会自动计算超出范围的输入的正确值。例如下面例子中每一行都会产生字符串 "Jan-01-1998"。
<?php
echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997));
echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 98));
?>

例子 2. 下个月的最后一天

任何给定月份的最后一天都可以被表示为下个月的第 "0" 天,而不是 -1 天。下面两个例子都会产生字符串 "The last day in Feb 2000 is: 29"。
<?php
$lastday = mktime(0, 0, 0, 3, 0, 2000);
echo strftime("Last day in Feb 2000 is: %d", $lastday);
$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo strftime("Last day in Feb 2000 is: %d", $lastday);
?> 

阅读全文

PHP中时间和日期函数总结

1. string date(string format,inieger timestamp)
该函数返回一个表示时间的字符串,是由string format 控制的。
如:
print(date("Y年 m月d日");//输出当前,年月日.
print(date("Y年 m月d日",60*60*24*365*10);//输出1980年1月1日.
?>
也许你会问,怎麽没有timestamp呢?若timestamp为空时,或不写时,表示使用当前时间一刻timestamp.
表示年份的控制符: Y---四位的年份 y---两位的年份
表示月份的控制符: m---从1-12的月份 F---英文月份名 M---简写的月份名
表示日号的控制符: d---前面有0的月份中日期 j--前面没有0的日号
表示星期的控制符: l--英文星期 D--简写的星期
表示小时的控制符: h--从1到12小时 H---从0到23的小时
表示上下午的控制符 a ---am或pm A---AM或PM
表示分钟的控制符: i---取值00-59
另外的 z--一年中的日期
2. array getdate(integer timestamp)
该函数返回一个矩阵.
如:
current_date=getdate();
print(current_date("hours"));
print(current_date("minutes");
print(current_date("seconds");
?>
说明:
元素 描述
hours 24小时格式的小时
mday 月份中日期
minutes 分钟
mon 数字形式的月份
month 月份全称
seconds 秒数
wday 从0到6的数字形式的星期几
weekday 星期几的名称
year 年份
0 时间戳即从1970年1月1日到现在的秒数
yday 一年中数字形式的日期
3. boolean checkdate(integer month,integer day,integer year)
该函数检查日期是否合法.如:
if(checkdate(2,29,1980))
print("日期合法!n");
?>
4. integer time()
该函数获得当前时间戳.如:
print(time());//输出一大串整数
?>
5. integer mktime(integer hour,integer minutes,integer seconds,integer month, integer day,integer year)
该函数返回给出日期的时间戳,即从1970年1月1日到现在的秒数.
如某参数超出范围,该函数也可以解释它,如13月即为第二年的一月.
如:
currenthour=date("H");
print("50个小时后为:");
print(date("h:i A l F dS,Y",mktime(currenthour 50)));
print("
n");
?>
6. string microtime()
该函数返回一个字符串,由当前时间的毫秒数 空格 从1970年开始的秒数
print("start:microtime()
n");
for(index=0;index<1000;index )
print("good!");
print("stop:microtime()
n");
?>

阅读全文

PHP字符串函数与使用分析




AddSlashes: 字符串加入斜线。
bin2hex: 二进位转成十六进位。
Chop: 去除连续空白。
Chr: 返回序数值的字符。
chunk_split: 将字符串分成小段。
convert_cyr_string: 转换古斯拉夫字符串成其它字符串。
crypt: 将字符串用 DES 编码加密。
echo: 输出字符串。
explode: 切开字符串。
flush: 清出输出缓冲区。
get_meta_tags: 抽出文件所有 meta 标记的资料。
htmlspecialchars: 将特殊字符转成 HTML 格式。
htmlentities: 将所有的字符都转成 HTML 字符串。
implode: 将数组变成字符串。
join: 将数组变成字符串。
ltrim: 去除连续空白。
md5: 计算字符串的 MD5 哈稀。
nl2br: 将换行字符转成 <br>。
Ord: 返回字符的序数值。
parse_str: 解析 query 字符串成变量。
print: 输出字符串。
printf: 输出格式化字符串。
quoted_printable_decode: 将 qp 编码字符串转成 8 位字符串。
QuoteMeta: 加入引用符号。
rawurldecode: 从 URL 专用格式字符串还原成普通字符串。
rawurlencode: 将字符串编码成 URL 专用格式。
setlocale: 配置地域化信息。
similar_text: 计算字符串相似度。
soundex: 计算字符串的读音值
sprintf: 将字符串格式化。
strchr: 寻找第一个出现的字符。
strcmp: 字符串比较。
strcspn: 不同字符串的长度。
strip_tags: 去掉 HTML 及 PHP 的标记。
StripSlashes: 去掉反斜线字符。
strlen: 取得字符串长度。
strrpos: 寻找字符串中某字符最后出现处。
strpos: 寻找字符串中某字符最先出现处。
strrchr: 取得某字符最后出现处起的字符串。
strrev: 颠倒字符串。
strspn: 找出某字符串落在另一字符串遮罩的数目。
strstr: 返回字符串中某字符串开始处至结束的字符串。
strtok: 切开字符串。
strtolower: 字符串全转为小写。
strtoupper: 字符串全转为大写。
str_replace: 字符串取代。
strtr: 转换某些字符。
substr: 取部份字符串。
trim: 截去字符串首尾的空格。
ucfirst: 将字符串第一个字符改大写。
ucwords: 将字符串每个字第一个字母改大写。

addslashes
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数使需要让数据库处理的字符串,引号的部份加上斜线,以供数据库查询 (query) 能顺利运作。这些会被改的字符包括单引号 ('')、双引号 (")、反斜线 backslash () 以及空字符 NUL (the null byte)。
参考: stripslashes() htmlspecialchars() quotemeta()

bin2hex
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数让二进位字符串转成十六进位字符串。
使用范例
补充:
josh@superfork.com (22-Jun-1999) 写了一个函数,可将十六进位转成二进位。
<?
function hex2bin($data) {
$len = strlen($data);
for($i=0;$i<$len;$i+=2) {
$newdata .= pack("C",hexdec(substr($string,$i,2)));
}
return $newdata;
}
?>

chop
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将字符串的连续空白清除。
使用范例
<?
$trimmed = Chop($line);
?>
参考: trim()

chr
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将字符的序数转成 ASCII 的字符。本函数和 ord() 成对照

阅读全文

WINDOWS2003+IIS环境下PHP配置心得

     
简单说来需要以下几步
 
1、采用安装包或ZIP包将PHP安装到本机,采用安装包可以省去配置系统环境变量"PATH" 和 配置php.ini文

件,缺点是选安装时选择几个扩展选项就安装几个扩展文件,不利于以后的系统扩展,如果采用手工安装则可以
 
通过php.ini自已决定开启哪些扩展。同时也能够对php的工作机制有一个深入的了解。
 
2、在IIS中安装WEB服务扩展,如果你只使用PHP 与 静态页,只允许PHP扩展就可以,其他全部禁用。网上

其它文章所说必须开启ASP扩展,开启所有未知ISAPI扩展 或 开启所有未知CGI扩展都没有必要。
 
3、在你的PHP网站或虚拟目录的属性-》主目录-》映射栏-》添加应用程序扩展,这一步是在地址栏里能识

别.php扩展名的关键。

4、到这一步实际上IIS就可以解析PHP了。可能你执行普通PHP脚本,但很可能连不上mysql数据库。
 
关于激活mysql扩展库
 
一般情况下,都能实现显示PHPinfo()的页面。就从能够显示该页面之后出现的问题说起

阅读全文

windowsXP环境下apache2.2+mysql5.1+php5.2+phpmyadmin2.


apache_2.2.6-win32-x86-no_ssl.msi 下载地址
mysql-noinstall-5.1.22-rc-win32.zip 下载地址
php-5.2.0-Win32.zip 下载地址
phpMyAdmin-2.11.3-all-languages.zip 下载地址

php有两种安装方法,模块化安装和CGI安装,当PHP被配置成CGI解析器时,每次解释PHP版本,web服务器便产生一个临时的PHP解析器来解释PHP脚本,很明显,这会使其性能降低。而当PHP被编译成Apache的一个模块时,它和Apache服务器运行在同一块内存地址中,和传统的CGI模式在性能上有非常大的提高。有些功能像持续的数据库连接只能在Apache模块方式下才具有。采用CGI模式时,还会遇到一些安全性方面的问题。所以本指引采用模块化安装PHP的方式。

1、安装apache:

1.1:下载以后点击直接安装就可以,我选择安装为D:workapache目录,安装以后apache就会自动运行,在地址栏里面输入http://127.0.0.1/便能出现apache的欢迎页面(It works!),表示apache安装已经成功。

1.2:修改D:workapacheconfhttpd.conf这个apache的配置文件,将其中的DocumentRoot "D:/work/apache/htdocs"修改为DocumentRoot "D:/work/web/";修改<Directory "D:/work/apache/htdocs">为<Directory "D:/work/web/">,注意这里两个目录的路径都是指向你程序开发的目录,最后要加上&ldquo;/&rdquo;。

1.3:重新启动apache(右下角应该多了一个绿色的灯,在里面找到restart),在地址栏里面输入http://127.0.0.1/就可以工作目录了。

2、安装PHP:

2.1:将PHP文件的安装包解压到D:workphp,然后拷贝D:workphpphp5ts.dll到C:WINDOWSsystem32。

2.2:在PHP的目录下面,将php.ini-dist修改为php.ini,修改其中的extension_dir为extension_dir = "D:workphpext"

2.3:将D:workapacheconfhttpd.conf中的DirectoryIndex index.html修改为DirectoryIndex index.html index.php,这样就可以默认支持index.php为默认加载页。

2.4:在D:workapacheconfhttpd.conf中的最后加上下面的三行代码:
LoadModule php5_module "d:/work/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
PHPIniDir "d:/work/php/"

2.5:重新起动apache以后,可以在工作目录下面新建index.php,写入:
<?php
phpinfo();
?>
然后访问http://127.0.0.1/出现大量的图标,就说明安装成功了。

3、安装MySQL:

3.1、将MySQL解压到D:workmysql目录,然后运行D:workmysqlbinmysqld.exe,MySQL就可以顺利运行了,但是还需要将D:workphplibmysql.dll文件复制到C:WINDOWSsystem32下面。php就能顺利得支持MySQL了。

3.2、修改步骤2.2里面的php.ini,将;extension=php_mysql.dll前面的&ldquo;;&rdquo;号去掉,让PHP支持mysql,然后重新启动apache。

阅读全文

Windows环境下完全手工配置Apache、MySQL和PHP

     

现在LAMP(Linux、Apache、MySQL、PHP/Perl/Python的简称)已经很流行了。在Windows下也有类似的,比如  WAMP(Apache, MySQL, PHP on  Windows)。这篇文章主要是介绍如何在Windows环境下完全手工配置Apache、MySQL和PHP,都是解压后直接修改配置文件的。当然也可以下载执行安装文件的版本,一个个进行自动安装。甚至可以下载这些软件的集合版本(WampServer,XAMPP),一步到位的安装。这里进行的是解压安装,看起来有些多此一举了,不过这样能了解这些软件安装的过程,有问题时能及时发现,某个软件升级更新时也能快速配置。

阅读全文