PHP函数
PHP 有超过 1000 个内建的函数,还有自定义函数。
函数是可以在程序中重复使用的语句块。
页面加载时函数不会立即执行。
函数只有在被调用时才会执行。
一、函数的定义和调用
用户定义的函数声明以单词 “function” 开头:
function functionName( 参数1,参数2,……) {
//被执行的代码;
return 返回值;
}
函数名能够以字母或下划线开头(而非数字)。
函数名对大小写不敏感。
在调用函数时需要向函数传递参数,被传入的参数称为 实际参数;
函数定义的参数称为 形式参数;
二、函数间传递参数
函数间传递参数的形式:
1.按值传递
函数名(实参);//传值,将实参传递给形参
2.按引用传递(传地址)
函数名(&实参);//传值,将实参的地址传递给形参
3.默认参数
定义形参时,可以指定某个参数为可选参数,将可选参数放在参数列表末尾,并指定默认值。
注意:可选参数必须放置参数列表末尾,且必须指定默认值!
三、函数返回值
使用return
语句返回值;
注意:函数定义时不需要声明返回值。
<?php
function sum($x,$y) {
$z=$x+$y;
return $z;
}
echo "5 + 10 = " . sum(5,10) . "<br>"; //15
echo "7 + 13 = " . sum(7,13) . "<br>"; //20
echo "2 + 4 = " . sum(2,4); //6
?>
四、PHP标准函数库
1.变量函数库
一些常用的变量函数:
2.字符串函数
一些重要的字符串函数:
(1)strlen()函数和mb_strlen()函数
返回字符串的长度,以字符计。
语法:strlen(string 字符串 )
但是,一个中文占 3 个字符数。
可以使用 mb_strlen()
设置指定编码输出中文字符个数:
<?php
echo mb_strlen("中文字符",'utf-8'); // 输出 4
?>
(2)substr()函数
返回子字符串。
语法:string substr (string 原字符串, int start [,int length])
strart
:必须,指定起始位置,从 0 开始。
length
:可选,指定长度。
(3)strstr()函数
截取原字符串中,从包含标识处到结尾的字符。
语法:string strstr (string 原串, string 标识)
<?php
$email = 'user@example.com';
$domain = strstr($email, '@');
echo $domain;
?>
(4)md5()函数
计算字符串的 MD5 散列。
语法:string md5 (string 原串, bool raw_output)
<?php
echo md5("船长"); #输出:a436878ee2927527f007235bbfdcf77c
?>
(5)explode()函数
按标识拆分字符串。返回拆分后的数组array
。
语法:explode (string separator, string string [, int limit])
separator
:必须,拆分标识。
string
:必须,原字符串。
limit
:可选。规定所返回的数组元素的数目。
可能的值:
大于 0 - 返回包含最多 limit 个元素的数组。
小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组。
0 - 会被当做 1, 返回包含一个元素的数组。
(6)strpos() 函数
用于检索字符串内指定的字符或文本。
因此,可用于判断字符在字符串中是否存在。
字符串中首字符的位置是 0 而不是 1。
语法:strpos("原来字符串","指定字符串");
如果找到匹配,则会返回首个匹配的字符位置。如果未找到匹配,则将返回 FALSE
。
<?php
echo strpos("Hello world!","world"); #输出:6
?>
mb_strpos() 按字处理,strpos() 按字符处理。
<?php
echo strpos('开始23测试ceshi', '测试') ; //8
echo mb_strpos('开始23测试ceshi', '测试'); //4
?>
(7)str_word_count() 函数
对字符串中的单词进行计数。
语法:str_word_count(string);
<?php
echo str_word_count("Hello world!"); // 输出 2
?>
(8)str_replace() 函数
用一些字符串替换字符串中的另一些字符。
语法:str_replace("要替换的string","替换后的string","原string");
<?php
echo str_replace("world", "Kitty", "Hello world!"); // 输出 Hello Kitty!
?>
(9)输出函数
echo()、print()、printf()……
print_r()
:除打印字符串之外,主要用来打印数组。
<?php
$foot = array('苹果', '午餐', '世界');
print_r($foot); //Array ( [0] => 苹果 [1] => 午餐 [2] => 世界 )
?>
(10)大部分字符串函数
函数 | 描述 |
---|---|
addcslashes() | 返回在指定的字符前添加反斜杠的字符串。 |
addslashes() | 返回在预定义的字符前添加反斜杠的字符串。 |
bin2hex() | 把 ASCII 字符的字符串转换为十六进制值。 |
chop() | 删除字符串右侧的空白字符或其他字符。 |
chr() | 从指定的 ASCII 值返回字符。 |
chunk_split() | 把字符串分割为一系列更小的部分。 |
convert_cyr_string() | 把字符串由一种 Cyrillic 字符集转换为另一种。 |
convert_uudecode() | 解码 uuencode 编码字符串。 |
convert_uuencode() | 使用 uuencode 算法对字符串进行编码。 |
count_chars() | 返回有关字符串中所用字符的信息。 |
crc32() | 计算字符串的 32 位 CRC。 |
crypt() | 单向的字符串加密法(hashing)。 |
echo() | 输出一个或多个字符串。 |
explode() | 分割字符串,把字符串打散为数组。 |
fprintf() | 把格式化的字符串写入到指定的输出流。 |
get_html_translation_table() | 返回由 htmlspecialchars() 和 htmlentities() 使用的翻译表。 |
hebrev() | 把希伯来文本转换为可见文本。 |
hebrevc() | 把希伯来文本转换为可见文本,并把新行(\n)转换为 <br> 。 |
hex2bin() | 把十六进制值的字符串转换为 ASCII 字符。 |
html_entity_decode() | 把 HTML 实体转换为字符。 |
htmlentities() | 把字符转换为 HTML 实体。 |
htmlspecialchars_decode() | 把一些预定义的 HTML 实体转换为字符。 |
htmlspecialchars() | 把一些预定义的字符转换为 HTML 实体。 |
implode() | 返回由数组元素组合成的字符串。 |
join() | implode() 的别名。 |
lcfirst() | 把字符串的首字符转换为小写。 |
levenshtein() | 返回两个字符串之间的 Levenshtein 距离。 |
localeconv() | 返回本地数字及货币格式信息。 |
ltrim() | 移除字符串左侧的空白字符或其他字符。 |
md5() | 计算字符串的 MD5 散列。 |
md5_file() | 计算文件的 MD5 散列。 |
metaphone() | 计算字符串的 metaphone 键。 |
money_format() | 返回格式化为货币字符串的字符串。 |
nl_langinfo() | 返回特定的本地信息。 |
nl2br() | 在字符串中的每个新行之前插入 HTML 换行符。 |
number_format() | 以千位分组来格式化数字。 |
ord() | 返回字符串中第一个字符的 ASCII 值。 |
parse_str() | 把查询字符串解析到变量中。 |
print() | 输出一个或多个字符串。 |
printf() | 输出格式化的字符串。 |
quoted_printable_decode() | 把 quoted-printable 字符串转换为 8 位字符串。 |
quoted_printable_encode() | 把 8 位字符串转换为 quoted-printable 字符串。 |
quotemeta() | 引用元字符。 |
rtrim() | 移除字符串右侧的空白字符或其他字符。 |
setlocale() | 设置地区信息(地域信息)。 |
sha1() | 计算字符串的 SHA-1 散列。 |
sha1_file() | 计算文件的 SHA-1 散列。 |
similar_text() | 计算两个字符串的相似度。 |
soundex() | 计算字符串的 soundex 键。 |
sprintf() | 把格式化的字符串写入变量中。 |
sscanf() | 根据指定的格式解析来自字符串的输入。 |
str_getcsv() | 把 CSV 字符串解析到数组中。 |
str_ireplace() | 替换字符串中的一些字符(对大小写不敏感)。 |
str_pad() | 把字符串填充为新的长度。 |
str_repeat() | 把字符串重复指定的次数。 |
str_replace() | 替换字符串中的一些字符(对大小写敏感)。 |
str_rot13() | 对字符串执行 ROT13 编码。 |
str_shuffle() | 随机地打乱字符串中的所有字符。 |
str_split() | 把字符串分割到数组中。 |
str_word_count() | 计算字符串中的单词数。 |
strcasecmp() | 比较两个字符串(对大小写不敏感)。 |
strchr() | 查找字符串在另一字符串中的第一次出现。 (strstr() 的别名。) |
strcmp() | 比较两个字符串(对大小写敏感)。 |
strcoll() | 比较两个字符串(根据本地设置)。 |
strcspn() | 返回在找到某些指定字符的任何部分之前,在字符串中查找的字符数。 |
strip_tags() | 剥去字符串中的 HTML 和 PHP 标签。 |
stripcslashes() | 删除由 addcslashes() 函数添加的反斜杠。 |
stripos() | 返回字符串在另一字符串中第一次出现的位置(对大小写不敏感)。 |
stristr() | 查找字符串在另一字符串中第一次出现的位置(大小写不敏感)。 |
strlen() | 返回字符串的长度。 |
strnatcasecmp() | 使用一种"自然排序"算法来比较两个字符串(对大小写不敏感)。 |
strnatcmp() | 使用一种"自然排序"算法来比较两个字符串(对大小写敏感)。 |
strncasecmp() | 前 n 个字符的字符串比较(对大小写不敏感)。 |
strncmp() | 前 n 个字符的字符串比较(对大小写敏感)。 |
strpbrk() | 在字符串中查找一组字符的任何一个字符。 |
strpos() | 返回字符串在另一字符串中第一次出现的位置(对大小写敏感)。 |
strrchr() | 查找字符串在另一个字符串中最后一次出现。 |
strrev() | 反转字符串。 |
strripos() | 查找字符串在另一字符串中最后一次出现的位置(对大小写不敏感)。 |
strrpos() | 查找字符串在另一字符串中最后一次出现的位置(对大小写敏感)。 |
strspn() | 返回在字符串中包含的特定字符的数目。 |
strstr() | 查找字符串在另一字符串中的第一次出现(对大小写敏感)。 |
strtok() | 把字符串分割为更小的字符串。 |
strtolower() | 把字符串转换为小写字母。 |
strtoupper() | 把字符串转换为大写字母。 |
strtr() | 转换字符串中特定的字符。 |
substr() | 返回字符串的一部分。 |
substr_compare() 从 | 指定的开始位置(二进制安全和选择性区分大小写)比较两个字符串。 |
substr_count() | 计算子串在字符串中出现的次数。 |
substr_replace() | 把字符串的一部分替换为另一个字符串。 |
trim() | 移除字符串两侧的空白字符和其他字符。 |
ucfirst() | 把字符串中的首字符转换为大写。 |
ucwords() | 把字符串中每个单词的首字符转换为大写。 |
vfprintf() | 把格式化的字符串写到指定的输出流。 |
vprintf() | 输出格式化的字符串。 |
vsprintf() | 把格式化字符串写入变量中。 |
wordwrap() | 打断字符串为指定数量的字串 |
3.日期/时间函数
一些重要的日期/时间函数。
(1)Date() 函数
把时间戳格式化为更易读的日期和时间。
语法
date(format,timestamp);
format
:必需。规定时间戳的格式。
点击此处,查看format字符列表
timestamp
:可选。规定时间戳。默认是当前时间和日期。
注释:时间戳是一种字符序列,它表示具体事件发生的日期和事件。
●获得简单的日期
date()
函数的格式参数是必需的,它们规定如何格式化日期或时间。
一些常用于日期的字符:
d - 表示月里的某天(01-31)
m - 表示月(01-12)
Y - 表示年(四位数)
1 - 表示周里的某天
其他字符,比如 “/”, “.” 或 “-” 也可被插入字符中,以增加其他格式。
<?php
echo "今天是 " . date("Y/m/d") . "<br>";
echo "今天是 " . date("Y.m.d") . "<br>";
echo "今天是 " . date("Y-m-d") . "<br>";
echo "今天是 " . date("l");
?>
●自动版权年份
<?php
echo © 2010-<?php echo date("Y")
?>
●获得简单的时间
常用于时间的字符:
h - 带有首位零的 12 小时小时格式
i - 带有首位零的分钟
s - 带有首位零的秒(00 -59)
a - 小写的午前和午后(am 或 pm)
<?php
echo "现在时间是 " . date("h:i:sa");
?>
(2)date_default_timezone_set()函数
设置时区。
date_default_timezone_set("Asia/Shanghai");
(3) mktime()函数
返回日期的 Unix 时间戳。Unix 时间戳包含 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)与指定时间之间的秒数。
语法:mktime(hour,minute,second,month,day,year);
<?php
$d=mktime(9, 12, 31, 6, 10, 2015);
echo "创建日期是 " . date("Y-m-d h:i:sa", $d);
//输出:创建日期是 2015-06-10 09:12:31am
?>
(4)strtotime()函数
用于把字符串转换为 Unix 时间。
语法:strtotime(time,now);
<?php
$d=strtotime("10:38pm April 15 2015");
echo "创建日期是 " . date("Y-m-d h:i:sa", $d);
//输出:创建日期 2015-04-15 10:38:00pm
$d=strtotime("tomorrow");
echo date("Y-m-d h:i:sa", $d) . "<br>";
//输出:2019-10-12 12:00:00am
$d=strtotime("next Saturday");
echo date("Y-m-d h:i:sa", $d) . "<br>";
//输出:2019-10-12 12:00:00am
$d=strtotime("+3 Months");
echo date("Y-m-d h:i:sa", $d) . "<br>";
//输出:2020-01-11 02:17:52pm
?>
(5)checkdate() 函数
用于验证格利高里日期(Gregorian date),验证日期的有效性。
语法:checkdate(month,day,year);
<?php
echo checkdate(7, 2, 2118); // 有效日期为 True
?>
(6)time()函数
返回当前时间的 Unix 时间戳,并格式化为日期:
<?php
$t=time();
echo($t . "<br>");
echo(date("Y-m-d",$t));
#例如输出:1570775240 2019-10-11
?>
(7)大部分日期函数
函数 | 说明 |
---|---|
checkdate() | 验证格利高里日期。 |
date_add() | 添加日、月、年、时、分和秒到日期。 |
date_create_from_format() | 返回根据指定格式进行格式化的新的 DateTime 对象。 |
date_create() | 返回新的 DateTime 对象。 |
date_date_set() | 设置新日期。 |
date_default_timezone_get() | 返回由所有的 Date/Time 函数使用的默认时区。 |
date_default_timezone_set() | 设置由所有的 Date/Time 函数使用的默认时区。 |
date_diff() | 返回两个日期间的差值。 |
date_format() | 返回根据指定格式进行格式化的日期。 |
date_get_last_errors() | 返回日期字符串中的警告/错误。 |
date_interval_create_from_date_string() | 从字符串的相关部分建立 DateInterval。 |
date_interval_format() | 格式化时间间隔。 |
date_isodate_set() | 设置 ISO 日期。 |
date_modify() | 修改时间戳。 |
date_offset_get() | 返回时区偏移。 |
date_parse_from_format() | 根据指定的格式返回带有关于指定日期的详细信息的关联数组。 |
date_parse() | 返回带有关于指定日期的详细信息的关联数组。 |
date_sub() | 从指定日期减去日、月、年、时、分和秒。 |
date_sun_info() | 返回包含有关指定日期与地点的日出/日落和黄昏开始/黄昏结束的信息的数组。 |
date_sunrise() | 返回指定日期与位置的日出时间。 |
date_sunset() | 返回指定日期与位置的日落时间。 |
date_time_set() | 设置时间。 |
date_timestamp_get() | 返回 Unix 时间戳。 |
date_timestamp_set() | 设置基于 Unix 时间戳的日期和时间。 |
date_timezone_get() | 返回给定 DateTime 对象的时区。 |
date_timezone_set() | 设置 DateTime 对象的时区。 |
date() | 格式化本地日期和时间。 |
getdate() | 返回某个时间戳或者当前本地的日期/时间的日期/时间信息。 |
gettimeofday() | 返回当前时间。 |
gmdate() | 格式化 GMT/UTC 日期和时间。 |
gmmktime() | 返回 GMT 日期的 UNIX 时间戳。 |
gmstrftime() | 根据区域设置对 GMT/UTC 日期和时间进行格式化。 |
idate() | 将本地时间/日期格式化为整数。 |
localtime() | 返回本地时间。 |
microtime() | 返回当前时间的微秒数。 |
mktime() | 返回日期的 Unix 时间戳。 |
strftime() | 根据区域设置对本地时间/日期进行格式化。 |
strptime() | 解析由 strftime() 生成的时间/日期。 |
strtotime() | 将任何英文文本的日期或时间描述解析为 Unix 时间戳。 |
time() | 返回当前时间的 Unix 时间戳。 |
timezone_abbreviations_list() | 返回包含夏令时、偏移量和时区名称的关联数组。 |
timezone_identifiers_list() | 返回带有所有时区标识符的索引数组。 |
timezone_location_get() | 返回指定时区的位置信息。 |
timezone_name_from_abbr() | 根据时区缩略语返回时区名称。 |
timezone_name_get() | 返回时区的名称。 |
timezone_offset_get() | 返回相对于 GMT 的时区偏移。 |
timezone_open() | 创建新的 DateTimeZone 对象。 |
timezone_transitions_get() | 返回时区的所有转换。 |
timezone_version_get() | 返回时区数据库的版本。 |