[php] PHP常用
htmlspecialchars()
htmlspecialchars(string,flags,character-set,double_encode)
函数把预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号)成为 &
" (双引号)成为 "
' (单引号)成为 '
< (小于)成为 <
> (大于)成为 >
<?php $str = "This is some <b>bold</b> text."; echo htmlspecialchars($str); ?>
<?php $str = "Bill & 'Steve'"; echo htmlspecialchars($str, ENT_COMPAT); // 只转换双引号 echo "<br>"; echo htmlspecialchars($str, ENT_QUOTES); // 转换双引号和单引号 echo "<br>"; echo htmlspecialchars($str, ENT_NOQUOTES); // 不转换任何引号 ?>
strtoupper()
string strtoupper ( string $string )
函数把字符串转换为大写。
<?php $str = "Mary Had A Little Lamb and She LOVED It So"; $str = strtoupper($str); echo $str; // Prints MARY HAD A LITTLE LAMB AND SHE LOVED IT SO ?>
empty
bool empty ( mixed $var )
判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。
"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
NULL
FALSE
array() (一个空数组)
$var; (一个声明了,但是没有值的变量)
<?php $var = 0; // Evaluates to true because $var is empty if (empty($var)) { echo '$var is either 0, empty, or not set at all'; } // Evaluates as true because $var is set if (isset($var)) { echo '$var is set even though it is empty'; } ?>
isset
bool isset ( mixed $var [, mixed $... ] )
检测变量是否设置,并且不是 NULL。
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("\0")并不等同于 PHP 的 NULL 常数。
<?php $var = ''; // 结果为 TRUE,所以后边的文本将被打印出来。 if (isset($var)) { echo "This var is set so I will print."; } // 在后边的例子中,我们将使用 var_dump 输出 isset() 的返回值。 // the return value of isset(). $a = "test"; $b = "anothertest"; var_dump(isset($a)); // TRUE var_dump(isset($a, $b)); // TRUE unset ($a); var_dump(isset($a)); // FALSE var_dump(isset($a, $b)); // FALSE $foo = NULL; var_dump(isset($foo)); // FALSE ?>
is_null
bool is_null ( mixed $var )
检测变量是否为 NULL
如果 var 是 null 则返回 TRUE,否则返回 FALSE。
unset
void unset ( mixed $var [, mixed $... ] )
unset() 销毁指定的变量。
unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。
<?php // 销毁单个变量 unset ($foo); // 销毁单个数组元素 unset ($bar['quux']); // 销毁一个以上的变量 unset($foo1, $foo2, $foo3); ?>
strlen
int strlen ( string $string )
获取字符串长度
返回给定的字符串 string 的长度。
count
int count ( mixed $var [, int $mode = COUNT_NORMAL ] )
计算数组中的单元数目或对象中的属性个数
strip_tags
string strip_tags ( string $str [, string $allowable_tags ] )
allowable_tags
使用可选的第二个参数指定不被去除的字符列表。
从字符串中去除 HTML 和 PHP 标记
该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。
该函数始终会剥离 HTML 注释。
<?php echo strip_tags("Hello <b><i>world!</i></b>","<b>"); ?>
$_GET
HTTP GET 变量
通过 URL 参数传递给当前脚本的变量的数组。
<?php
echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!';
?>
假设用户访问的是 http://example.com/?name=Hannes
以上例程的输出类似于:
Hello Hannes!
$_POST
HTTP POST 变量
通过 HTTP POST 方法传递给当前脚本的变量的数组。
$_COOKIE
HTTP Cookies
通过 HTTP Cookies 方式传递给当前脚本的变量的数组。
$_REQUEST
HTTP Request 变量
默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组。
foreach
语法结构提供了遍历数组的简单方式。
foreach
仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。
有两种语法:
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。
第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。
#可以很容易地通过在 $value 之前加上 & 来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。
<?php $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $value = $value * 2; } // $arr is now array(2, 4, 6, 8) unset($value); // 最后取消掉引用 ?>
#$value 的引用仅在被遍历的数组可以被引用时才可用(例如是个变量)。以下代码则无法运行:
<?php foreach (array(1, 2, 3, 4) as &$value) { $value = $value * 2; } ?>
#
<?php /* foreach example 1: value only */ $a = array(1, 2, 3, 17); foreach ($a as $v) { echo "Current value of \$a: $v.\n"; } /* foreach example 2: value (with its manual access notation printed for illustration) */ $a = array(1, 2, 3, 17); $i = 0; /* for illustrative purposes only */ foreach ($a as $v) { echo "\$a[$i] => $v.\n"; $i++; } /* foreach example 3: key and value */ $a = array( "one" => 1, "two" => 2, "three" => 3, "seventeen" => 17 ); foreach ($a as $k => $v) { echo "\$a[$k] => $v.\n"; } /* foreach example 4: multi-dimensional arrays */ $a = array(); $a[0][0] = "a"; $a[0][1] = "b"; $a[1][0] = "y"; $a[1][1] = "z"; foreach ($a as $v1) { foreach ($v1 as $v2) { echo "$v2\n"; } } /* foreach example 5: dynamic arrays */ foreach (array(1, 2, 3, 4, 5) as $v) { echo "$v\n"; } ?>
#用 list() 给嵌套的数组解包
PHP 5.5 增添了遍历一个数组的数组的功能并且把嵌套的数组解包到循环变量中,只需将 list() 作为值提供。
<?php $array = [ [1, 2], [3, 4], ]; foreach ($array as list($a, $b)) { // $a contains the first element of the nested array, // and $b contains the second element. echo "A: $a; B: $b\n"; } ?>
以上例程会输出:
A: 1; B: 2
A: 3; B: 4
#list() 中的单元可以少于嵌套数组的,此时多出来的数组单元将被忽略:
<?php $array = [ [1, 2], [3, 4], ]; foreach ($array as list($a)) { // Note that there is no $b here. echo "$a\n"; } ?>
以上例程会输出:
1
3
#如果 list() 中列出的单元多于嵌套数组则会发出一条消息级别的错误信息:
<?php $array = [ [1, 2], [3, 4], ]; foreach ($array as list($a, $b, $c)) { echo "A: $a; B: $b; C: $c\n"; } ?>
以上例程会输出:
Notice: Undefined offset: 2 in example.php on line 7
A: 1; B: 2; C:
Notice: Undefined offset: 2 in example.php on line 7
A: 3; B: 4; C:
each
array each ( array &$array )
返回数组中当前的键/值对并将数组指针向前移动一步
在执行 each()之后,
数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。
如果要再用 each 遍历数组,必须使用 reset()。
#
<?php $foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese"); $bar = each($foo); print_r($bar); ?>
$bar 现在包含有如下的键/值对:
Array
(
[1] => bob
[value] => bob
[0] => 0
[key] => 0
)
#
<?php $foo = array("Robert" => "Bob", "Seppo" => "Sepi"); $bar = each($foo); print_r($bar); ?>
$bar 现在包含有如下的键/值对:
Array
(
[1] => Bob
[value] => Bob
[0] => Robert
[key] => Robert
)
#each() 经常和 list() 结合使用来遍历数组,例如:
<?php $fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry'); reset($fruit); while (list($key, $val) = each($fruit)) { echo "$key => $val\n"; } ?>
以上例程会输出:
a => apple
b => banana
c => cranberry
json_decode
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
接受一个 JSON 编码的字符串并且把它转换为 PHP 变量
assoc:当该参数为 TRUE 时,将返回 array 而非 object 。
json_encode
string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )
对变量进行 JSON 编码
返回 value 值的 JSON 形式
成功则返回 JSON 编码的 string 或者在失败时返回 FALSE 。
preg_split
array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )
通过一个正则表达式分隔字符串
<?php //使用逗号或空格(包含" ", \r, \t, \n, \f)分隔短语 $keywords = preg_split("/[\s,]+/", "hypertext language, programming"); print_r($keywords); ?> // Array ( [0] => hypertext [1] => language [2] => programming )
preg_match — 执行一个正则表达式匹配
preg_filter — 执行一个正则表达式搜索和替换
preg_grep — 返回匹配模式的数组条目
preg_last_error — 返回最后一个PCRE正则执行产生的错误代码
preg_match_all — 执行一个全局正则表达式匹配
preg_quote — 转义正则表达式字符
preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换
preg_replace — 执行一个正则表达式的搜索和替换
str_split — 将字符串转换为数组
mb_split — 使用正则表达式分割多字节字符串(汉字)转换为数组
explode
array explode ( string $delimiter , string $string [, int $limit ] )
使用一个字符串分割另一个字符串
<?php // 示例 1 $pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza); echo $pieces[0]; // piece1 echo $pieces[1]; // piece2 // 示例 2 $data = "foo:*:1023:1000::/home/foo:/bin/sh"; list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data); echo $user; // foo echo $pass; // * ?>
implode
string implode ( string $glue , array $pieces )
string implode ( array $pieces )
implode — 将一个一维数组的值转化为字符串
<?php $array = array('lastname', 'email', 'phone'); $comma_separated = implode(",", $array); echo $comma_separated; // lastname,email,phone // Empty string when using an empty array: var_dump(implode('hello', array())); // string(0) "" ?>