php常用的header头汇总

[code]
###内容类型###

header(‘Content-Type: text/html; charset=utf-8′); //网页编码

header(‘Content-Type: text/plain’); //纯文本格式

header(‘Content-Type: image/jpeg’); //JPG、JPEG

header(‘Content-Type: application/zip’); // ZIP文件

header(‘Content-Type: application/pdf’); // PDF文件

header(‘Content-Type: audio/mpeg’); // 音频文件

header(‘Content-type: text/css’); //css文件

header(‘Content-type: text/javascript’); //js文件

header(‘Content-type: application/json’); //json

header(‘Content-type: application/pdf’); //pdf

header(‘Content-type: text/xml’); //xml格式文件

header(‘Content-Type: application/x-shockw**e-flash’); //Flash动画

###对当前文档禁用缓存###

header(‘Cache-Control: no-cache, no-store, max-age=0, must-revalidate’);

header(‘Expires: Mon, 26 Jul 1997 05:00:00 GMT’);

###显示一个需要验证的登陆对话框###

header(‘HTTP/1.1 401 Unauthorized’);

header(‘WWW-Authenticate: Basic realm="Top Secret"’);

###声明一个下载的文件###

header(‘Content-Type: application/octet-stream’);

header(‘Content-Disposition: attachment; filename="ITblog.zip"’);

header(‘Content-Transfer-Encoding: binary’);

readfile(‘test.zip’);

###声明一个需要下载的xls文件###

header(‘Content-Disposition: attachment; filename=ithhc.xlsx’);

header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet’);

header(‘Content-Length: ‘.filesize(‘./test.xls’));

header(‘Content-Transfer-Encoding: binary’);

header(‘Cache-Control: must-revalidate’);

header(‘Pragma: public’);

readfile(‘./test.xls’);

header(‘HTTP/1.1 200 OK’); // ok 正常访问

header(‘HTTP/1.1 404 Not Found’); //通知浏览器 页面不存在

header(‘HTTP/1.1 301 Moved Permanently’); //设置地址被永久的重定向 301

header(‘Location: http://www.netljc.com/’); //跳转到一个新的地址

header(‘Refresh: 10; url=http://www.netljc.com/’); //延迟转向 也就是隔几秒跳转

header(‘X-Powered-By: PHP/6.0.0′); //修改 X-Powered-By信息

header(‘Content-language: en’); //文档语言

header(‘Content-Length: 1234′); //设置内容长度

header(‘Last-Modified: ‘.gmdate(‘D, d M Y H:i:s’, $time).’ GMT’); //告诉浏览器最后一次修改时间

header(‘HTTP/1.1 304 Not Modified’); //告诉浏览器文档内容没有发生改变
[/code]

php检查程序执行时间

$time1 = microtime(true);
// ... 执行代码 ...
$time2 = microtime(true);
echo '耗时'.round($time2-$time1,3).'秒';
程序说明:
microtime() 如果带个 true 参数, 返回的将是一个浮点类型. 这样 time1 和 time2 得到的就是两个浮点数, 相减之后得到之间的差. 由于浮点的位数很长, 或者说不确定, 所以再用个 round() 取出小数点后 3 位. 这样就是我们需要的结果了。

php判断本地或者远程文件是否存在

1、检查本地文件

file_exists()、is_file()

2、检查远程文件

fopen()、file_get_contents()、fsockopen(),注意在使用fopen需要在php.ini中添加allow_url_fopen = On配置

自己的通用函数

[php]&lt;/pre&gt;<br />
function my_file_exists($file)<br />
{<br />
if(preg_match(‘/^http:\/\//’,$file)){<br />
//远程文件<br />
if(ini_get(‘allow_url_fopen’)){<br />
if(@fopen($file,’r’)) return true;<br />
}<br />
else{<br />
$parseurl=parse_url($file);<br />
$host=$parseurl[‘host’];<br />
$path=$parseurl[‘path’];<br />
$fp=fsockopen($host,80, $errno, $errstr, 10);<br />
if(!$fp)return false;<br />
fputs($fp,&quot;GET {$path} HTTP/1.1 \r\nhost:{$host}\r\n\r\n&quot;);<br />
if(preg_match(‘/HTTP\/1.1 200/’,fgets($fp,1024))) return true;<br />
}<br />
return false;<br />
}<br />
return file_exists($file);<br />
}<br />
&lt;pre&gt;<br />
[/php]
注意,判断文件如果使用”/”代表的不是网站的根目录而是服务器的根目录

PHP获取类中具有的方法及属性

PHP获取类中具有的方法及属性
在php中要获取一个类所具有的属性和方法,可以使用php为我们提供的反射类ReflectionClass;所谓反射类就是利用这个一个类就可以得到其他类中的信息,例如:有多少个方法,方法名称分别是什么,有多少个属性,有哪些是静态的等。使用方法也很简单,值需要传入对应的类名就可以了
[php]<br />
//实例化反射类<br />
$class = new ReflectionClass(‘Teacher’);<br />
[/php]

具体的参数请参考下面的方法:
ReflectionClass::__construct — 构造一个 ReflectionClass 类
ReflectionClass::export — 导出一个类
ReflectionClass::getConstant — 获取定义过的一个常量
ReflectionClass::getConstants — 获取一组常量
ReflectionClass::getConstructor — 获取类的构造函数
ReflectionClass::getDefaultProperties — 获取默认属性
ReflectionClass::getDocComment — 获取文档注释
ReflectionClass::getEndLine — 获取最后一行的行数
ReflectionClass::getExtension — 根据已定义的类获取所在扩展的 ReflectionExtension 对象
ReflectionClass::getExtensionName — 获取定义的类所在的扩展的名称
ReflectionClass::getFileName — 获取定义类的文件名
ReflectionClass::getInterfaceNames — 获取接口(interface)名称
ReflectionClass::getInterfaces — 获取接口
ReflectionClass::getMethod — 获取一个类方法的 ReflectionMethod。
ReflectionClass::getMethods — 获取方法的数组
ReflectionClass::getModifiers — 获取修饰符
ReflectionClass::getName — 获取类名
ReflectionClass::getNamespaceName — 获取命名空间的名称
ReflectionClass::getParentClass — 获取父类
ReflectionClass::getProperties — 获取一组属性
ReflectionClass::getProperty — 获取类的一个属性的 ReflectionProperty
ReflectionClass::getShortName — 获取短名
ReflectionClass::getStartLine — 获取起始行号
ReflectionClass::getStaticProperties — 获取静态(static)属性
ReflectionClass::getStaticPropertyValue — 获取静态(static)属性的值
ReflectionClass::getTraitAliases — 返回 trait 别名的一个数组
ReflectionClass::getTraitNames — 返回这个类所使用 traits 的名称的数组
ReflectionClass::getTraits — 返回这个类所使用的 traits 数组
ReflectionClass::hasConstant — 检查常量是否已经定义
ReflectionClass::hasMethod — 检查方法是否已定义
ReflectionClass::hasProperty — 检查属性是否已定义
ReflectionClass::implementsInterface — 接口的实现
ReflectionClass::inNamespace — 检查是否位于命名空间中
ReflectionClass::isAbstract — 检查类是否是抽象类(abstract)
ReflectionClass::isCloneable — 返回了一个类是否可复制
ReflectionClass::isFinal — 检查类是否声明为 final
ReflectionClass::isInstance — 检查类的实例
ReflectionClass::isInstantiable — 检查类是否可实例化
ReflectionClass::isInterface — 检查类是否是一个接口(interface)
ReflectionClass::isInternal — 检查类是否由扩展或核心在内部定义
ReflectionClass::isIterateable — 检查是否可迭代(iterateable)
ReflectionClass::isSubclassOf — 检查是否为一个子类
ReflectionClass::isTrait — 返回了是否为一个 trait
ReflectionClass::isUserDefined — 检查是否由用户定义的
ReflectionClass::newInstance — 从指定的参数创建一个新的类实例
ReflectionClass::newInstanceArgs — 从给出的参数创建一个新的类实例。
ReflectionClass::newInstanceWithoutConstructor — 创建一个新的类实例而不调用它的构造函数
ReflectionClass::setStaticPropertyValue — 设置静态属性的值
ReflectionClass::__toString — 返回 ReflectionClass 对象字符串的表示形式。
下面的代码是获取一个类中的所有公共方法及方法所需要传入的参数:
[php]<br />
echo ‘&lt;div style=&quot;color:red;&quot;&gt;';<br />
$methods = $class-&gt;getMethods();<br />
foreach ($methods as $m){<br />
if ($m-&gt;isPublic() &amp;&amp; !$m-&gt;isConstructor()) {<br />
echo ‘具有的方法:’.$m-&gt;getName();<br />
$parameters = $m-&gt;getParameters();<br />
if($parameters){<br />
echo ‘,具有的参数:';<br />
foreach ($parameters as $p){<br />
echo $p-&gt;getName();<br />
}<br />
}<br />
echo ‘&lt;br/&gt;';<br />
}<br />
}<br />
echo ‘&lt;/div&gt;';<br />
[/php]

php gzcompress() 和gzuncompress()函数实现字符串压缩

当我们说到压缩,我们可能会想到文件压缩,其实,字符串也是可以压缩的。PHP提供了 gzcompress() 和gzuncompress() 函数。

几乎有50% 压缩比率。同时,你还可以使用 gzencode() 和 gzdecode() 函数来压缩,只不用其用了不同的压缩算法。

php自动加载文件

在php开发过程中总会使用到include/require来包含文件,但是包含的文件过多的时候显得就不那么方便,那么,有什么办法能一劳永逸呢?

我们可以使用php的自动加载函数__autoload();例如:

[php]</p>
<p>function __autoload($classname)<br />
{<br />
$file = $classname . ‘.php';<br />
if (is_file($file)) {<br />
require_once($file);<br />
}<br />
}</p>
<p>[/php]

如果我们想使用自定义的函数来加载类,而不是系统的__autoload();那么我们可以使用spl_autoload_register(‘myautoload’)函数来改变,如果是在类中,可使用:

spl_autoload_register(array(‘myclass’,’myautoload’));

在此之前可以使用

set_include_path(get_include_path(). PATH_SEPARATOR . APP_PATH );需要自动加载的文件夹路径

php合并数组键值保持不变的方法

方法1:foreach遍历

[php]$a = array("111"=>"aaa","112"=>"bbb");

$b = array("113"=>"ccc","114"=>"ddd");
$c = array();
foreach( $a as $key => $value ) {
$c[$key] = $value;
}
foreach( $b as $key => $value ) {
$c[$key] = $value;
}[/php]

方法2:数组合并

这个数组合并并不是要直接使用数组的合并函数,如果使用array_merge()来合并数组,数组的键值要是数字的话,所有的键都会从0重新开始,这显然不是我们需要的结果,那么就只能使用上面的笨办法了么?当然不是,我们可以将两个数组直接相加,这样就可以得到需要合并的结果了,例如:

[php]$a = array("111"=>"aaa","112"=>"bbb");

$b = array("113"=>"ccc","114"=>"ddd");
$c = $a+$b;
}[/php]

php对二维数组排序

在php中可使用uasort()来对二维数组排序

array 必需。规定要排序的数组。
function 必需。用户自定义的函数。

函数必须设计为返回 -1, 0, 或 1,并应该接受两个供比较的参数,同时以类似下面这样的方式来工作:

  • 如果 a = b, 返回 0
  • 如果 a < b, 返回 1
  • 如果 a > b, 返回 -1

[php]
<pre><?php
function my_sort($a, $b)
{
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
}

$people = array("Swanson" => "Joe",
"Griffin" => "Peter", "Quagmire" => "Glenn",
"swanson" => "joe", "griffin" => "peter",
"quagmire" => "glenn");

uasort($people, "my_sort");

print_r ($people);
?></pre>
[/php]

PHP number_format() 函数

定义和用法

number_format() 函数通过千位分组来格式化数字。

参数 描述
number 必需。要格式化的数字。

如果未设置其他参数,则数字会被格式化为不带小数点且以逗号 (,) 作为分隔符。

decimals 可选。规定多少个小数。如果设置了该参数,则使用点号 (.) 作为小数点来格式化数字。
decimalpoint 可选。规定用作小数点的字符串。
separator 可选。规定用作千位分隔符的字符串。

仅使用该参数的第一个字符。比如 “xyz” 仅输出 “x”。

注释:如果设置了该参数,那么所有其他参数都是必需的。

注释:该函数支持一个、两个或四个参数(不是三个)。

例子

<?php
echo number_format("1000000");
echo number_format("1000000",2);
echo number_format("1000000",2,",",".");
?>

输出:

1,000,000
1,000,000.00
1.000.000,00

 

获取ip相关信息(省、市、区)的方法总结

大家有时候在编写代码的时候需要使用到ip的相关信息,比如:获取当前用户所在的省份、城市等;以下有几种方式可供参考:

1、新浪的ip地址查询接口

自动获取用户ip,返回相关信息
http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js
提供ip查询,json格式返回

http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=218.192.3.42

2、腾讯ip分享

http://ip.qq.com/cgi-bin/searchip?searchip1=61.139.55.1
这种方式需要自行写正则表达式获取页面中的内容

3、搜狐ip地址查询接口

http://pv.sohu.com/cityjson
你也可以指定编码

http://pv.sohu.com/cityjson?ie=utf-8

4、使用qq的文件qqwry.dat,需要下载先下载这个文件,可在其他网上找到相关的资料,比较多,这里就不在说明。