PHP常用函数整理
数组
(r)sort ( )
对值进行(反)正向排序而不用考虑键的问题,值会被赋予新的键a(r)sort ( )
对值进行(反)正向排序的同时保持每个值同它键之间的对应关系k(r)sort ( )
对键进行(反)正向排序的同时保持每个键同它值之间的对应关系implode( )
它用来将数组转换为字符串
为了将一个数组转换为字符串,需要定义用什么作为分隔符(也就是之间的连接符),PHP将处理剩下的工作:
$string = implode($glue, $array)explode( )
$array = explode($separator, $string);
separator分隔符指明了一个或多个字符,用来区分一个值的结束和另外一个值 开始。通常情况下分隔符是一个逗号、一个制表符或者一个空格。
用来将字符串转换为数组list()
函数用来将数组元素的值赋给单独的变量。
示例:
$date = array(‘Thursday’, 23, ‘October’);
list($weekday, $day, $month) = $date;
现在$weekday变量有了Thursday这个值,$day变量的值则为23,$month变量的值为October。
在使用list()时要注意两点。首先,list()只对数值型索引并从0开始索引的数组有用。其次,当使用list()函数时,必须确认接受每一个数组元素。
但是可以用空值的方式忽略元素:
list ($weekday, , $month) = $date;
字符串
nl2br ( )
在字符串 string 所有新行之前插入 ‘<br />’ 或 ‘<br>’,并返回。htmlspecialchars( )
将特定的HTML标签转换为实体版本。htmlentities( )
将所有的HTML标签转换为实体版本.strip_tags( )
移除所有的HTML和PHP标签。urlencode( )
接受一个字符串,并对之编码(encode)(改变它的格式),以便它完全适合作为
URL的一部分传输。crypt( )
对数据进行加密(单向加密)strtok( )
string strtok ( string $str , string $token )
strtok() 将字符串 str 分割为若干子字符串,每个子字符串以 token 中的字符分割。substr( )
string substr ( string $string , int $start [, int $length ] )
返回字符串 string 由 start 和 length 参数指定的子字符串。strcmp( )
将用返回一个整数的方式返回两个字符串的比较结果strnatcmp( )
类似,但是从语言学上更加精确strcasecmp( )
不区分大小写的比较函数strnatcasecmp( )
不区分大小写的比较函数strstr( )
返回字符串中从被找寻的字符串第一次出现的位置开始直到字符串结束的所有字符str_ireplace( )
mixed str_ireplace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换(忽略大小写)之后的结果。如果没有一些特殊的替换规则,你应该使用该函数替换带有 i 修正符的 preg_replace() 函数。
常量
- define()
为常量赋值,define(常量名称,值)
输出缓冲
利用输出缓冲,HTML和打印的数据(输出)将被放到缓冲(也就是内存)中。当脚本执行结束后,缓冲将被发送到Web浏览器,或者如果需要的话,缓冲可以清空而不发送到Web浏览器
- ob_start()
在脚本中尽可能早地调用ob_start()函数
在脚本的结束位置,所有的HTML之后,添加:
ob_end_flush()
将积累下来的缓冲发送到Web浏览器ob_end_clean()
删除缓冲的数据而不进行传输
处理HTTP头
- header()
须在任何内容被发送到Web浏览器之前调用该函数——否则,会看到非常常见的“HTTP头已发送”错误消息(因此可以用到”输出缓冲”的方式)
header()函数的一种常见的用法:
将用户从一个页面重定向到另一个页面。要使用PHP来重定向用户的浏览器,需要发送一个location头:
header(‘Location: page.php’)
cookie和session
setcookie( )
setcookie(name, value, expiration, path, domain, secure,httponly);
删除名为username的cookie,可以编写代码
setcookie(‘username’, ‘’);
或
setcookie(‘username’, FALSE);
和所有带有参数的函数一样,必须按顺序传递所有的参数值。在先前的示例中,如果不希望指定(或者限制)路径和域,需要使用空的引号。在path参数中,可以使用一个单独的斜线(/)表示根目录(即,无路径重定向)。通过这样做,可以保留适当数量的参数并且如果需要仍然能够指定使用HTTPS连接。session_start( )
创建、访问或删除session
一旦启用session,可以通过向数组$_SESSION赋值的方式记录数据session_name( )
可以修改session的名称(替代默认的PHPSESSID),必须在session_start之前使用session_set_cookie_params( )
函数用来修改session cookie的设置(如过期时间、路径和域)。session_destroy( )
从服务器上删除session数据(保存在临时文件中)
$_SESSION = array()再次设置数组$_SESSION来删除session的值(在客户端上)(全部删除)
可以使用unset($_SESSION[‘var’])来删除一个单独的session值
当session ID必须附加给站点中每个链接(以便让每个页面都能够接受到session ID)的情况下,可以让PHP使用session而不使用cookie
文件读写
basename()
string basename ( string $path [, string $suffix ] )
basename — 返回路径中的文件名部分
如果文件名是以 suffix 结束的,那这一部分也会被去掉。file_get_contents()
将整个文件读入一个字符串file_put_contents( )
file_put_contents($file, $data)
PHP5以上,打开文件并写入数据。第一个参数是文件名。可以使用绝对路径,也可以使用相对路径(参见框注“文件路径”)。第二个参数是要写入的数据,可以是字符串、数字或数组(只能是一维数组,不能使用多维数组)。
如果文件不存在,函数会尝试创建它。如果文件存在,文件的内容会被新的数据取代。如果需要将新内容追加到文件中,加入FILE_APPEND
常量作为第三个参数:
file_put_contents($file, $data, FILE_APPEND)
当多个PHP脚本试图在同一时刻写入同一个文件时,就会出现问题(文件会损坏)。解决方法是在PHP对文件进行写入时,暂时锁定该文件
file_put_contents($file, $data, LOCK_EX);
file_put_contents($file, $data, FILE_APPEND | LOCK_EX)
可以使用PHP专用的常量PHP_EOL,表示当前操作系统的换行符(即,\n或\r\n)is_writable()
这个函数返回布尔值,表示指定文件是否可被写入file( )
读取文件中的所有内容并将这些信息放置在一个数组中。数组的每个元素都包含了文件中的一行,这些行是用换行符(\n或\r\n)分隔的。move_uploaded_file()
当文件上传后,服务器会将其放置在一个临时目录中。之后可以使用
move_uploaded_file()
函数将文件存放在其最终目标位置:
move_uploaded_file($_FILES[‘picture’][‘tmp_name’], ‘/path/to/dest/filename’);
第一个参数是服务器中文件的临时名。第二个参数是移动目标的完整路径和文件名。unlink()
删除文件scandir()
$stuff = scandir($dir);
列出指定路径中的文件和目录
该函数是PHP 5中添加的,用于返回一个数组,其中包含了从给定目录中找到的所有项——目录和文件。就这个与文件有关的函数来说,$dir(要被浏览的目录)的值可以是绝对路径也可以是相对路径。filesize()
检查文件大小filemtime()
函数用于检索文件的修改时间。glob()
函数可以搜索名字与模式相匹配的文件目录mkdir(‘directory_name’, permissions);
directory_name是要创建的目录的名字。这个值可以是以当前目录(即脚本所在的目录)为起点的相对路径,也可以是完整路径fgetcsv()
它使用给定的分隔符切分字符串,并返回一个数组:
$array = fgetcsv($fp, length, delimiter);
它使用默认的分隔符(逗号)对字符串进行切分,该分隔符用作元素位置的指示器
如果提供分隔符参数,就可以改变用于描述数据的分隔符。
因为这函数依赖于行尾指示符,所以最好采用额外的保护措施,即启用PHP的auto_detect_line_endings设置。可以使用ini_set()函数来完成:
ini_set(‘auto_detect_line_endings’, 1)rename()
bool rename ( string $oldname , string $newname [, resource $context ] )
尝试把 oldname 重命名为 newname。
要让表单接受文件上传,在form开始标签中应入enctype属性:
enctype=”multipart/form-data”
可以通过 $subdir = time() . rand(0, 4596)这样简单的方式为文件重命名且保证他的唯一性
MySQL数据库
mysqli_connect( )
mysqil_connect(hostname, username, password)
用于连接数据库mysqli_close( )
用于关闭与数据库的连接mysqli_query()
执行MySQL语句mysqli_select_db()
用于选中数据库
注意,任何时候一个数据库只需要创建一次,但每次在其上运行查询之前都需要选中它。换句话说,一些开发人员需要执行前述的第一步(指创建数据库),而每个人在每个PHP脚本中都需要执行前述第二步(指选中数据库)。mysqli_real_escape_ string()
该函数会对任何可能危险的字符进行转义,即在其前面添加一个反斜线,确保
查询中使用的数据是安全的:
string mysqli_real_escape_string ( mysqli $link , string $escapestr )
$link: 仅以过程化样式:由mysqli_connect() 或 mysqli_init() 返回的链接标识。
$escapestr : 需要进行转义的字符串,会被进行转义的字符包括: NUL (ASCII 0),\n,\r,\,’,” 和 Control-Z.mysqli_fetch_array()
函数从结果集中每次获取一行数据,并在这一过程中创建一个数组。例如从查询语句中:$result = mysql_query($query, $dbc);
这个数组会使用已选择的列名作为索引:$row[‘name’]、$row[‘email’]等。和使用其他数组一样,必须通过数据库中定义的确切列名来引用其中的列(列名是区分大小写的)。
如果查询会返回多行数据,在循环中执行mysql_fetch_array()函数,以获取所有的行mysqli_affected_row()
该函数用于返回被INSERT、DELETE或UPDATE查询影响到的行数。
网络查询函数
parse_url()
解析url,返回一个包含url各部分的关联数组,url组成部分包括模式、用户、主机、端口、路径、查询以及分段gethostbyname()
输入主机,返回IP地址gethostbyadd()
输入IP地址,返回主机名称;