PHP 常用 函数总结 持续更新中...

来源:互联网 发布:网页游戏源码 编辑:程序博客网 时间:2024/04/28 02:28

1.关于字符串的处理相关函数

(1)rtrim(string,charlist)函数从字符串的末端开始删除空白字符或其他预定义字符。

参数 描述
  string 必需。规定要转换的字符串。
  charlist 可选。规定从字符串中删除哪些字符。

如果未设置该参数,则全部删除以下字符:

  "/0" - ASCII 0, NULL
  "/t" - ASCII 9, 制表符
  "/n" - ASCII 10, 新行
  "/x0B" - ASCII 11, 垂直制表符
  "/r" - ASCII 13, 回车
 

例子
在本例中,我们将使用 rtrim() 函数从字符串右端删除字符:

<?php
  $str = "Hello World!/n/n";
  echo $str;
  echo rtrim($str);
?>
以上代码输出的源代码:

<html>

  <body>
   Hello World!

   Hello World!
  </body>

</html>
输出:

Hello World! Hello World!
(2)stripcslashes() 函数删除由 addcslashes() 函数添加的反斜杠。
语法
  stripcslashes(string)
    参数 描述         
  string 必需。规定要检查的字符串。

提示和注释
释:该函数用于清理从数据库中取回的数据。


例子
<?php
 
  echo stripcslashes("Hello, /my na/me is Kai Ji/m.");
  
?>
输出:
 
Hello, my name is Kai Jim


(3)htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
预定义的字符是:
 
  & (和号) 成为 &amp;

  " (双引号) 成为 &quot;

  ' (单引号) 成为 &#039;
  < (小于) 成为 &lt;
  > (大于) 成为 &gt;
 

htmlspecialchars(string,quotestyle,character-set)
参数 描述
 
string 必需。规定要转换的字符串。
quotestyle 可选。规定如何编码单引号和双引号。

ENT_COMPAT - 默认。仅编码双引号。
ENT_QUOTES - 编码双引号和单引号。
ENT_NOQUOTES - 不编码任何引号。
 
character-set 可选。字符串值,规定要使用的字符集。

ISO-8859-1 - 默认。西欧。
ISO-8859-15 - 西欧(增加 Euro 符号以及法语、芬兰语字母)。
UTF-8 - ASCII 兼容多字节 8 比特 Unicode
cp866 - DOS 专用 Cyrillic 字符集
cp1251 - Windows 专用 Cyrillic 字符集
cp1252 - Windows 专用西欧字符集
KOI8-R - 俄语
GB2312 - 简体中文,国家标准字符集
BIG5 - 繁体中文
BIG5-HKSCS - Big5 香港扩展
Shift_JIS - 日语
EUC-JP - 日语
 
 
提示和注释
 
提示:无法被识别的字符集将被忽略,并由 ISO-8859-1 代替。

例子
<html>
<body>
<?php
  $str = "John & 'Adams'";
  echo htmlspecialchars($str, ENT_COMPAT);
  echo "<br />";
  echo htmlspecialchars($str, ENT_QUOTES);
  echo "<br />";
  echo htmlspecialchars($str, ENT_NOQUOTES);
?>
</body>
</html>
浏览器输出:

John & 'Adams'
John & 'Adams'
John & 'Adams'
如果在浏览器中查看源代码,会看到这些 HTML:

<html>
<body>
John &amp; 'Adams'<br />
John &amp; &#039;Adams&#039;<br />
John &amp; 'Adams'
</body>
</html>


(4)stripos() 函数返回字符串在另一个字符串中第一次出现的位置。如果没有找到该字符串,则返回 false。

语法
 
  stripos(string,find,start)
 
参数 描述
 
string 必需。规定被搜索的字符串。
find 必需。规定要查找的字符。
start 可选。规定开始搜索的位置。


提示和注释
注释:该函数对大小写不敏感。如需进行对大小写敏感的搜索,请使用 strpos() 函数。

例子
<?php
 
  echo stripos("Hello world!","WO");
  
?>
输出:6

 

(5)stristr() 函数查找字符串在另一个字符串中第一次出现的位置。如果成功,则返回字符串的其余部分(从匹配点)。如果没有找到该字符串,则返回 false。

语法
stristr(string,search)
参数 描述
string 必需。规定被搜索的字符串。
find 必需。规定要查找的字符。如果该参数是数字,则搜索匹配该数字对应的 ASCII 值的字符。


提示和注释
注释:该函数是二进制安全的。

注释:该函数对大小写不敏感。如需对大小写敏感的搜索,请使用 strstr()。


例子 1
<?php
  echo stristr("Hello world!","WORLD");
?>
输出:

world!
例子 2
<?php
  echo stristr("Hello world!",111);
?>
输出:

o world!

(6)strtoupper() 函数把字符串转换为大写。

定义和用法
strtoupper() 函数把字符串转换为大写。

语法
strtoupper(string)参数 描述
string 必需。规定要转换的字符串。
例子
<?php
echo strtoupper("Hello WORLD!");
?>输出:

HELLO WORLD!PHP String 函数

(7)strtolowwer()
2.关于数字的处理相关函数
(1)ceil — 进一法取整  
  返回不小于 value 的下一个整数,value 如果有小数部分则进一位。
  ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。
  
  <?phpecho
  ceil(4.3);    // 5echo ceil(9.999);  // 10
  ?>  
3.关于日期的处理相关函数

(1)date() 函数的第一个参数规定了如何格式化日期/时间。它使用字母来表示日期和时间的格式。这里列出了一些可用的字母:

d - 月中的天 (01-31)
m - 当前月,以数字计 (01-12)
Y - 当前的年(四位数)
您可以在我们的 PHP Date 参考手册中,找到格式参数中可以使用的所有字母。

可以在字母之间插入其他字符,比如 "/"、"." 或者 "-",这样就可以增加附加格式了:

<?php
  echo date("Y/m/d");
  echo "<br />";
  echo date("Y.m.d");
  echo "<br />";
  echo date("Y-m-d");
?>
以上代码的输出类似这样:

2006/07/11
2006.07.11
(2)mktime() 函数可为指定的日期返回 Unix 时间戳。
语法
mktime(hour,minute,second,month,day,year,is_dst)如需获得某一天的时间戳,我们只要设置 mktime() 函数的 day 参数就可以了:

<?php
  $tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y"));
  echo "Tomorrow is ".date("Y/m/d", $tomorrow);
?>
以上代码的输出类似这样:

明天是 2006/07/12

3.数组方面

(1)

定义和用法
in_array() 函数在数组中搜索给定的值。

语法
in_array(value,array,type)参数 描述
value 必需。规定要在数组搜索的值。
array 必需。规定要搜索的数组。
type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。

说明
如果给定的值 value 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。

如果没有在数组中找到参数,函数返回 false。

注释:如果 value 参数是字符串,且 type 参数设置为 true,则搜索区分大小写。
例子 1
<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");

if (in_array("Glenn",$people))
  {
  echo "Match found";
  }
else
  {
  echo "Match not found";
  }
?>输出:

Match found例子 2
<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland", 23);

if (in_array("23",$people, TRUE))
  {
  echo "Match found<br />";
  }
else
  {
  echo "Match not found<br />";
  }if (in_array("Glenn",$people, TRUE))
  {
  echo "Match found<br />";
  }
else
  {
  echo "Match not found<br />";
  }if (in_array(23,$people, TRUE))
  {
  echo "Match found<br />";
  }
else
  {
  echo "Match not found<br />";
  }
?>输出:

Match not found
Match found
Match found

(2)array_unshift()

array_unshift() 函数在数组开头插入一个或多个元素。

被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样。

该函数会返回数组中元素的个数。

语法
array_unshift(array,value1,value2,value3...)

参数
描述

array必需。规定输入的数组。

value1必需。规定插入的值。

value2可选。规定插入的值。

value3可选。规定插入的值。

提示和注释

注释:所有的数值键名将修改为从零开始重新计数,所有的字符串键名保持不变。

例子 2

返回键值:

<?php$a=array("a"=>"Cat","b"=>"Dog");print_r(array_unshift($a,"Horse"));?>

输出:

3

例子 3

数组带有数值键:

<?php$a=array(0=>"Cat",1=>"Dog");array_unshift($a,"Horse");print_r($a);?>

输出:

Array ( [0] => Horse [1] => Cat [2] => Dog )

(3)PHP array_push() 函数

定义和用法

array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。

该函数等于多次调用 $array[] = $value。

语法
array_push(array,value1,value2...)

参数
描述

array
必需。规定一个数组。

value1
必需。规定要添加的值。

value2
可选。规定要添加的值。

提示和注释

注释:即使数组中有字符串键名,您添加的元素也始终是数字键。(参见例子 2)

注释:如果用 array_push() 来给数组增加一个单元,还不如用 $array[] =,因为这样没有调用函数的额外负担。

注释:如果第一个参数不是数组,array_push() 将发出一条警告。这和 $var[] 的行为不同,后者会新建一个数组。

例子 1

<?php$a=array("Dog","Cat");array_push($a,"Horse","Bird");print_r($a);?>

输出:

Array ( [0] => Dog [1] => Cat [2] => Horse [3] => Bird )

例子 2

带有字符串键的数组:

<?php$a=array("a"=>"Dog","b"=>"Cat");array_push($a,"Horse","Bird");print_r($a);?>

输出:

Array ( [a] => Dog [b] => Cat [0] => Horse [1] => Bird )

(4)array_pop

说明

mixed array_pop ( array&$array )

array_pop() 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL

Note: 使用本函数后会重置(reset())数组指针。

Example #1 array_pop() 例子

<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
print_r($stack);
?>

经过此操作后,$stack 将只有 3 个单元:

Array(    [0] => orange    [1] => banana    [2] => apple)

并且 rasberry 将被赋给 $fruit

(5)array_shift

array_shift

(PHP 4, PHP 5)

array_shift — 将数组开头的单元移出数组

说明

mixed array_shift ( array&$array )

array_shift()array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。如果 array 为空(或者不是数组),则返回NULL

Note: 使用本函数后会重置(reset())数组指针。

Example #1 array_shift() 例子

<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
print_r($stack);
?>

这将使 $stack 剩下 3 个单元:

Array(    [0] => banana    [1] => apple    [2] => raspberry)

并且 orange 被赋给了 $fruit

4.Filesystem 函数
(1)PHP dirname() 函数
定义和用法
dirname() 函数返回路径中的目录部分。

语法
dirname(path)参数 描述
path 必需。规定要检查的路径。

说明
path 参数是一个包含有指向一个文件的全路径的字符串。该函数返回去掉文件名后的目录名。
例子
<?php
echo dirname("c:/testweb/home.php");
echo dirname("/testweb/home.php");
?>输出:

c:/testweb
/testweb

从今将以这种形式来记录日常的遇到函数,便于增强记忆 ———2011.04.27

===========================================================================

->函数名 :ignore_user_abort()

定义和用法

ignore_user_abort() 函数设置与客户机断开是否会终止脚本的执行。

本函数返回 user-abort 设置的之前的值(一个布尔值)。

语法

ignore_user_abort(setting)

参数 描述

setting 可选。如果设置为 true,则忽略与用户的断开,如果设置为 false,会导致脚本停止运行。

如果未设置该参数,会返回当前的设置。

提示和注释

注释:PHP 不会检测到用户是否已断开连接,直到尝试向客户机发送信息为止。简单地使用 echo 语句无法确保信息发送,参阅 flush() 函数。

例子

<?phpignore_user_abort();?>

输出:

0
===========================================================================

->函数名:set_time_limit()

函数说明

(PHP 4中,PHP 5中) set_time_limit - 限制最大的执行时间

函数定义

void set_time_limit ( int $seconds )

设置允许脚本运行的秒数。如果这是达成共识,该脚本返回一个致命的错误。默认限制为30秒,或者,如果它存在,价值的max_execution_time在php.ini定义。

在调用时,set_time_limit()函数从零重新启动超时计数器。换句话说,如果超时默认的30秒,25秒到脚本的执行参数或者set_time_limit,如电话(20)制成,该脚本将运行45秒的总超时之前。

参数

参数 描述

$seconds 为整型,最大执行时间,以秒计。如果设置为零,没有时间方面的限制。

返回值
没有返回值。
警告
这个函数没有影响当PHP运行在安全模式 。有没有解决方法以外的其他安全模式下关闭或改变了 php.ini 程序运行时间。
注意
set_time_limit()函数和配置指令max_execution_time仅仅只影响脚本本身的执行时间。任何时间运行程序的操作,在脚本执行系统调用,如使用system(),流操作,数据库查询等,不包括在确定的最大时间,该脚本已运行。这不是在Windows如此,因为测量的时间是真实的。

实例说明

例-1
如果打开没有安全模式,设置程序运行时间为25秒。例如:

<?php

if( !ini_get('safe_mode') ){

set_time_limit(25);

}

?>

例-2
当用了set_time_limit()函数设置运行时间,sleep()函数在执行程序时的持续时间将会被忽略掉。例如:

<?php

set_time_limit(20);

while ($i<=10)

{

echo "i=$i ";

sleep(100);

$i++;

}

?>[1]

===========================================================================

->函数名:file_get_contents()

定义和用法

file_get_contents() 函数把整个文件读入一个字符串中。

和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。

file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。

语法
file_get_contents(path,include_path,context,start,max_length)

参数 描述

path 必需。规定要读取的文件。

include_path 可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。

context 可选。规定文件句柄的环境。

context 是一套可以修改流的行为的选项。若使用 null,则忽略。

start 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 新加的。

max_length 可选。规定读取的字节数。该参数是 PHP 5.1 新加的。

 

说明

context 参数的支持是 PHP 5.0.0 添加的。

提示和注释

注释:本函数可安全用于二进制对象。

例子

<?phpecho file_get_contents("test.txt");?>

输出:

This is a test file with test text.
===========================================================================

->函数名:preg_match_all()

说明

int preg_match_all ( string pattern, string subject, array matches [, int flags] )

在 subject 中搜索所有与 pattern 给出的正则表达式匹配的内容并将结果以 flags 指定的顺序放到 matches 中。

搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。

flags 可以是下列标记的组合(注意把 PREG_PATTERN_ORDER 和 PREG_SET_ORDER 合起来用没有意义):

PREG_PATTERN_ORDER

对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。

<?php

preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",

"<b>example: </b><div align=left>this is a test</div>",

$out, PREG_PATTERN_ORDER);

print $out[0][0].", ".$out[0][1]."/n";

print $out[1][0].", ".$out[1][1]."/n";

?>

本例将输出:

<b>example: </b>, example:

<div align=left>this is a test</div>, this is a test

本例中,$matches[0] 是第一组匹配结果,$matches[0][0] 包含匹配整个模式的文本,$matches[0][1] 包含匹配第一个子模式的文本,以此类推。同样,$matches[1] 是第二组匹配结果,等等。

PREG_OFFSET_CAPTURE

如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其在 subject 中的偏移量。本标记自 PHP 4.3.0 起可用。

如果没有给出标记,则假定为 PREG_PATTERN_ORDER。

返回整个模式匹配的次数(可能为零),如果出错返回 FALSE。

例子

例子 1. 从某文本中取得所有的电话号码

<?php

preg_match_all ("//(? (/d{3})? /)? (?(1) [/-/s] ) /d{3}-/d{4}/x",

"Call 555-1212 or 1-800-555-1212", $phones);

?>

例子 2. 搜索匹配的 HTML 标记(greedy)

<?php

// //2 是一个逆向引用的例子,其在 PCRE 中的含义是

// 必须匹配正则表达式本身中第二组括号内的内容,本例中

// 就是 ([/w]+)。因为字符串在双引号中,所以需要

// 多加一个反斜线。

$html = "<b>bold text</b><a href=howdy.html>click me</a>";

preg_match_all ("/(<([/w]+)[^>]*>)(.*)(<////2>)/", $html, $matches);

for ($i=0; $i< count($matches[0]); $i++) {

echo "matched: ".$matches[0][$i]."/n";

echo "part 1: ".$matches[1][$i]."/n";

echo "part 2: ".$matches[3][$i]."/n";

echo "part 3: ".$matches[4][$i]."/n/n";

}

?>

本例将输出:

matched: <b>bold text</b>

part 1: <b>

part 2: bold text

part 3: </b>

matched: <a href=howdy.html>click me</a>

part 1: <a href=howdy.html>

part 2: click me

part 3: </a>

===========================================================================

->函数名:array_unique( )

定义和用法

array_unique() 函数移除数组中的重复的值,并返回结果数组。

当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。

返回的数组中键名不变。

语法

array_unique(array)

参数
描述

array
必需。规定输入的数组。

说明
array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。

提示和注释

注释:被返回的数组将保持第一个数组元素的键类型。

例子

<?php $a=array("a"=>"Cat","b"=>"Dog","c"=>"Cat");

print_r(array_unique($a));

?>

输出:

Array ( [a] => Cat [b] => Dog )

===========================================================================

->函数名:fopen()

定义和用法

fopen() 函数打开文件或者 URL。

如果打开失败,本函数返回 FALSE。

语法
fopen(filename,mode,include_path,context)

参数                                    描述

filename                             必需。规定要打开的文件或 URL。

mode                                  必需。规定要求到该文件/流的访问类型。可能的值见下表。

include_path                       可选。如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。

context                                可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。

 

mode 参数的可能的值

mode                 说明

"r"                     只读方式打开,将文件指针指向文件头。

"r+"                   读写方式打开,将文件指针指向文件头。

"w"                    写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

"w+"                  读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

"a"                     写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

"a+"                   读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

"x"                     创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_                        WARNING 级别的错误信息。如果文件不存在则尝试创建之。

                          这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。

                           此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。

"x+"                    创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_                         WARNING 级别的错误信息。如果文件不存在则尝试创建之。

                            这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。

                            此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件

提示和注释

注释:不同的操作系统家族具有不同的行结束习惯。当写入一个文本文件并想插入一个新行时,需要使用符合操作系统的行结束符号。基于 Unix 的系统使用 /n 作为行结束字符,基于 Windows 的系统使用 /r/n 作为行结束字符,基于 Macintosh 的系统使用 /r 作为行结束字符。 如果写入文件时使用了错误的行结束符号,则其它应用程序打开这些文件时可能会表现得很怪异。

Windows 下提供了一个文本转换标记("t")可以透明地将 /n 转换为 /r/n。与此对应还可以使用 "b" 来强制使用二进制模式,这样就不会转换数据。要使用这些标记,要么用 "b" 或者用 "t" 作为 mode 参数的最后一个字符。

默认的转换模式依赖于 SAPI 和所使用的 PHP 版本,因此为了便于移植鼓励总是指定恰当的标记。如果是操作纯文本文件并在脚本中使用了 /n 作为行结束符,但还要期望这些文件可以被其它应用程序例如 Notepad 读取,则在 mode 中使用 "t"。在所有其它情况下使用 "b"。

在操作二进制文件时如果没有指定 "b" 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 /r/n 字符的奇怪问题。

注释:为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 "b" 标记。

注释:再一次,为移植性考虑,强烈建议你重写那些依赖于 "t" 模式的代码使其使用正确的行结束符并改成 "b" 模式。

例子

<?php$file = fopen("test.txt","r");$file = fopen("/home/test/test.txt","r");$file = fopen("/home/test/test.gif","wb");$file = fopen("http://www.example.com/","r");$file = fopen("ftp://user:password@example.com/test.txt","w");?>

====================================================================================

->函数名:fwrite()

 

定义和用法

fwrite() 函数写入文件(可安全用于二进制文件)。

语法
fwrite(file,string,length)

参数                描述

file                  必需。规定要写入的打开文件。

string             必需。规定要写入文件的字符串。

length             可选。规定要写入的最大字节数。

说明

fwrite() 把 string 的内容写入文件指针 file 处。 如果指定了 length,当写入了length 个字节或者写完了 string 以后,写入就会停止,视乎先碰到哪种情况。

fwrite() 返回写入的字符数,出现错误时则返回 false。

例子

<?php$file = fopen("test.txt","w");echo fwrite($file,"Hello World. Testing!");fclose($file);?>

输出:

21

====================================================================================

->函数名:sleep()

定义和用法

sleep() 函数延迟代码执行若干秒。

语法
sleep(seconds)

参数
描述

seconds
必需。以秒计的暂停时间。

返回值

若成功,返回 0,否则返回 false。

错误/异常

如果指定的描述 seconds 是负数,该函数将生成一个 E_WARNING。

例子

<?phpecho date('h:i:s') . "<br />";//暂停 10 秒sleep(10);//重新开始echo date('h:i:s');?>

输出:

12:00:0812:00:18

遇到函数 ———2011.05.03

===========================================================================

->函数名 :PHP highlight_file() 函数

定义和用法

highlight_file() 函数对文件进行语法高亮显示。

语法
highlight_file(filename,return)

参数                   描述

filename          必需。要进行高亮处理的 PHP 文件的路径。

return              可选。如果设置 true,则本函数返回高亮处理的代码。

说明

本函数通过使用 PHP 语法高亮程序中定义的颜色,输出或返回包含在 filename 中的代码的语法高亮版本。

许多服务器被配置为对带有 phps 后缀的文件进行自动高亮处理。例如,在查看 example.phps 时,将显示该文件被语法高亮显示的源代码。要启用该功能,请把下面这一行添加到httpd.conf

AddType application/x-httpd-php-source .phps
返回值

如果 return 参数被设置为 true,那么该函数会返回被高亮处理的代码,而不是输出它们。否则,若成功,则返回 true,失败则返回 false。

提示和注释

警告:需要注意的是,在使用 highlight_file() 函数时,请不要因为疏忽而泄露诸如密码或其他类型的敏感信息,否则会出现潜在的安全风险。

例子

"test.php":

<html><body><?phphighlight_file("test.php");?></body></html>

输出:

<html> <body> <?php highlight_file("test.php"); ?></body> </html>

在浏览器中查看的结果类似这样:

<html><body><code><span style="color: #000000">&lt;html&gt;<br />&lt;body&gt;<br /><span style="color: #0000BB">&lt;?php<br />highlight_file</span><span style="color: #007700">(</span><span style="color: #DD0000">"test.php"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;<br /></span>&lt;/body&gt;<br />&lt;/html&gt;</span></code></body></html>

遇到函数 ———2011.05.04

===========================================================================

->函数名 :parse_url

array parse_url ( string $url )

本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。

本函数不是用来验证给定 URL 的合法性的,只是将其分解为下面列出的部分。不完整的 URL 也被接受,parse_url() 会尝试尽量正确地将其解析。

返回值

对严重不合格的 URL,parse_url() 可能会返回 FALSE 并发出E_WARNING。否则会返回一个关联数组,其组成部分为(至少有一个):

  • scheme - 如 http
  • host
  • port
  • user
  • pass
  • path
  • query - 在问号 ? 之后
  • fragment - 在散列符号 # 之后
注释

Note:

本函数不能用于相对 URL。

Note:

parse_url() 是专门用来解析 URL 而不是 URI 的。不过为遵从 PHP 向后兼容的需要有个例外,对 file:// 协议允许三个斜线(file:///...)。其它任何协议都不能这样。

 

->函数名 :fsockopen

语法: int fsockopen(string hostname, int port, int [errno], string [errstr], int [timeout]);

返回值: 整数

函数种类: 网络系统

hostname 参数表示到 socket 的主机,
port 配置为 主机端口。
timeout 选项表示多久没有连上就中断,可省略。
errnoerrstr 也是可省略的,主要当做错误处理使用。

在使用本函数之后会返回文件指针,供文件函数使用,包括 fgets()、fgetss()、fputs()、fclose() 与 feof()。
使用本函数,会使用搁置模式 (blocking mode) 处理,可用 set_socket_blocking() 转换成无搁置模式。

下面实例用来模拟成 HTTP 连接。

<?php
$fp = fsockopen(“php.wilson.gs”, 80, &$errno, &$errstr, 10);
if(!$fp) {
echo “$errstr ($errno)<br>/n”;
} else {
fputs($fp,”GET / HTTP/1.0/nHost: php.wilson.gs/n/n”);
while(!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
?>

当服务器没开启fsockopen功能的时候,用fsockopen会提示undefine fsockopen,解决办法如下:

1.打开php.ini文件,将allow_url_fopen 的值设置成 On

2.php.ini文件中找到
extension=php_openssl.dll
如果前面有分号,去掉分号

3.重启web服务器,apache或IIS

 

->函数名 :stream_set_blocking()

stream_set_blocking ($resource, $flag); $flag 取值为0或1

0是非阻塞,1是阻塞

阻塞的意义是什么呢?

某个函数读取一个网络流,当没有未读取字节的时候,程序该怎么办?

是一直等待,直到下一个未读取的字节的出现,还是立即告诉调用者当前没有新内容?

前者是阻塞的,后者是非阻塞的。

阻塞的好处是,排除其它非正常因素,阻塞的是按顺序执行的同步的读取。

借用小说里的说法就是“神刀出鞘,无血不归”。在读到新内容之前,它不会往下走,什么别的事情都不做。

而非阻塞,因为不必等待内容,所以能异步的执行,现在读到读不到都没关系,执行读取操作后立刻就继续往下做别的事情。

如果你不放心,可以过一定的时间再来检查执行的结果。之前我写过一个用popen pclose来让程序并发执行的例子。

当时的遗憾就是调用之后不管,所以没法知道程序是否执行成功了。现在popen之后设定为非阻塞模式,就可以创建一个数组作为任务池。
使用一个while(1)的“死循环”来检查当前任务池中各个任务的状态,有老任务执行完毕时,$status = stream_get_meta_data($resource);
状态值$status['eof']为真,就表示那个任务执行完毕了。我本次实现的程序功能比较单一,只需要知道它执行完毕就可以了。如果你的任务有多种结果,那就继续分析读取到的内容吧。发现有任务执行完毕,从任务池中剔除该任务,如果任务队列中还有未做的任务,就把新任务从队列中移到任务池中执行。

说的比较啰嗦,如果你用过网络蚂蚁或网际快车之类的下载软件,你会发现我讲的这些其实就是它们的工作原理。

ps:多进程异步抓取很爽啊

 

stream_set_timeout用法

 

stream_set_timeout的使用方法

2007-12-11 15:45

PHP函数stream_set_timeout(Stream Functions)作用于读取流时的时间控制。fsockopen函数的timeout只管创建连接时的超时,对于连接后读取流时的超时,则需要用到 stream_set_timeout函数。由于国内的网络环境不是很稳定,尤其是连接国外的时候,不想程序出现Fatal error: Maximum execution time of 30 seconds exceeded in …的错误,该函数尤其有用。stream_set_timeout需配合stream_get_meta_data使用,如果没有timeout, stream_get_meta_data返回数组中time_out为空,反之为1,可根据此判断是否超时。另外由于PHP默认的Maximum execution time为30秒,这是一次执行周期的时间,为了不出现上述的Fatal error,还需要设置一个总的读取流的时间,具体方法参见下面详细代码。
$server="www.yahoo.com";
$port = 80;
$data="GET / HTTP/1.0rn";
$data.="Connection: Closern";
$data.="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)rnrn";
$start_time = time();
$fp=fsockopen($server, $port, $errno, $errstr, 5);
if (!$fp) {
die("Connect Timeout.n");
} else {
stream_set_blocking($fp, True);
stream_set_timeout($fp, 3);
fputs($fp, "$data");
while (!feof($fp)) {
$text .= fread($fp, 2000);
$diff = time() - $start_time;
if ($diff > 24) {
die("Timeout!n");
}
$status = stream_get_meta_data($fp);
if ($status[’timed_out’]) {
die("Stream Timeout!n");
}
}
}
fclose($fp);
?>

遇到函数 ———2011.05.09

==========================================================================

->函数名 :array_change_key_case()

array_change_key_case() 函数将数组的所有的 KEY 都转换为大写或小写。

数组的数字索引不发生变化。如果未提供可选参数(即第二个参数),则默认转换为小写字母。

语法
array_change_key_case(array,case)

参数 描述

array 必需。规定要使用的数组。

case 可选。可能的值:

  • CASE_LOWER - 默认值。以小写字母返回数组的键。
  • CASE_UPPER - 以大写字母返回数组的键。

提示和注释:

注释:如果在运行该函数时两个或多个键相同,则最后的元素会覆盖其他元素(参见例子 2)。

例子 1

<?php$a=array("a"=>"Cat","b"=>"Dog","c"=>"Horse");print_r(array_change_key_case($a,CASE_UPPER));?> 

输出:

Array ( [A] => Cat [B] => Dog [C] => Horse )

例子 2

<?php$a=array("a"=>"Cat","b"=>"Dog","c"=>"Horse","B"=>"Bird");print_r(array_change_key_case($a,CASE_UPPER));?> 

输出:

Array ( [A] => Cat [B] => Bird [C] => Horse )

->函数名 :setcookie()

创建 cookie

通过 setcookie() 函数来创建一个 cookie ,成功返回 TRUE ,否则返回 FALSE 。

语法:

bool setcookie( string name [, string value [, int expire [, string path [, string domain ]]]] )
参数说明:

参数 说明

name cookie 名称

value 可选,cookie 值

expire 可选,过期时间,时间戳格式

path 可选,服务器端有效路径,/ 表示整个域名有效,默认为当前设置 cookie 时页面的路径

domain 可选,该 cookie 有效的域名

创建 cookie 的例子:

<?phpsetcookie("username", "xiaoli", time()+3600);?>

在该例子中,我们设置了一个名称为 username 的cookie,其值为 xiaoli ,并在1小时候后过期。如果时间也被省略,cookie 将会在会话结束后(一般是浏览器关闭)失效。

cookie 会以一定格式被存储在用户计算机特定位置。

一个更完整的例子:

<?phpsetcookie("username", "xiaoli", time()+3600, "/", ".5idev.com");?>

该例子使用了 path 和 domain 参数,即在 5idev.com 域名的 / 路径下该 cookie 都有效(即全站有效)。

读取 cookie

PHP 内置了 $_COOKIE 变量以访问设置的 cookie 值。

例子:

<?phpecho $_COOKIE["username"];//输出 xiaoli?>

使用 isset() 函数来检测 cookie 变量是否已经被设置:

<?phpif (isset($_COOKIE["username"])) {    echo "欢迎你: ".$_COOKIE["username"];} else {    echo "请登陆";}?>

销毁 cookie

可以通过设置 cookie 过期时间为以前的时间点来销毁一个 cookie :

<?phpsetcookie("username", "", time()-3600);?>
提示
  1. 由于协议限制,在设置 cookie 之前,不能有任何内容向浏览器输出
  2. cookie 不会在设置的当前页生效,要访问设置的 cookie ,必须是另一个页面在过期之前访问
  3. 由于 cookie 信息存储于用户的计算机中,那么就有可能伪造 cookie 从而造成 cookie 欺骗,一般可以对 cookie 的值进行加密来预防欺骗。读取 cookie 的时候,对 cookie 解密即可

遇到函数 ———2011.05.26

==========================================================================

定义和用法

parse_str() 函数把查询字符串解析到变量中。

语法
parse_str(string,array)

参数
描述

string
必需。规定要解析的字符串。

array
可选。规定存储变量的数组名称。该参数指示变量存储到数组中。

提示和注释

注释:如果未设置 array 参数,由该函数设置的变量将覆盖已由同名变量。

注释:php.ini 中的 magic_quotes_gpc 设置影响该函数的输出。如果已启用,那么在 parse_str() 解析之前,变量会被 addslashes() 转换。

例子

例子 1
<?phpparse_str("id=23&name=John%20Adams");echo $id."<br />";echo $name;?>

输出:

23John Adams
例子 2
<?phpparse_str("id=23&name=John%20Adams",$myArray);print_r($myArray);?>

输出:

Array([id] => 23[name] => John Adams)



array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。

如果 offset 非负,则序列将从 array 中的此偏移量开始。如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始。

如果给出了 length 并且为正,则序列中将具有这么多的单元。如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从 offset开始一直到 array 的末端。

注意 array_slice() 默认将重置数组的键。自 PHP 5.0.2 起,可以通过将 preserve_keys 设为 TRUE 来改变此行为。


原创粉丝点击