php常用总结

1. PHP处理脚本解析(脚本不乱码)

header('Conent-type:text/html;charset=utf-8');

2. 常用的系统函数

2.1 有关输出的函数:print和print_r

print()==类似于echo输出提供的内容,本质是一种结构(不是函数),返回1,可以不需要使用括号;

print_r()==类似于var_dump,但是比var_dump简单,不会输出数据的类型,只会输出值(数组打印使用比较多)

image

2.2 有关时间的函数

date()格式化时间

按照指定格式对对应的时间戳(从1970年格林威治时间开始计算的秒数)转换成指定的格式,如果没有指定特定的时间戳,那么就是默认解释当前时间戳

// 当前系统时间
echo date('Y-m-d H:i:s');

// 第2个参数是指定时间戳,表示指定时间戳的时间
echo date('Y-m-d H:i:s',5689562323);  

time()当前时间的时间戳
$curWeek= date('Y-m-d H:i:s');
echo '当前日期:'.$curWeek;

$nextWeek=date('Y-m-d H:i:s',time()+7*24*60*60);
echo '下周:'.$nextWeek;

microtime()获取微秒级别的时间
strtotime()按照规定格式的字符串(必须是英文的)转换成时间戳
$nextWeek=date('Y-m-d H:i:s',strtotime('tomorrow 10 hours'));
echo '明天10点:'.$nextWeek;

image

3. 有关数字的函数

max()==指定参数中最大的值
min()==比较两个数中较小的值
rand()==得到一个随机数,指定区间的随机整数
mt_rand()==与rand一样,只是底层结构不一样,效率比rand高(建议使用)
round()==四舍五入
ceil()==向上取整
floor()==向下取整
pow()==求指定数字的指定指数次结果:pow(2,8) == 2^8 == 256
abs()==绝对值
sqrt()==求平方根

4. 有关函数的函数

function_exists():判断指定的函数名字是否在内存中存在(帮助用户不去使用一个不存在的函数,让代码安全性更高)

func_get_arg():在自定义函数中去获取指定数值对应的参数

func_get_args():在自定义函数中获取所有的参数(数组)

func_num_args():获取当前自定义函数的参数数量

3. 数组常用操作

3.1 数组常用的函数

count():获取数组长度

array_push():往数组中加入一个元素(数组后面)

array_pop():从数组中取出一个元素(数组后面)

array_shift():从数组中取出一个元素(数组前面)

array_unshift():从数组中加入一个元素(数组前面)

array_reverse():数组元素反过来

in_array():判断一个元素在数组中是否存在

array_keys():获取一个数组的所有下标,返回一个索引数组

array_values():获取一个数组的所有值,返回一个索引数组

排序

数组中的元素能够以字母或数字进行升序或降序排序

sort()== 以升序对数组排序

rsort()== 以降序对数组排序

asort() 根据值,以升序对关联数组进行排序

ksort() ==根0据键,以升序对关联数组进行排序

arsort() ==根据值,以降序对关联数组进行排序

krsort() ==根据键,以降序对关联数组进行排序

shuffle() == 随机打乱数组元素,数组下标会重排

指针函数

reset():重置指针,将数组指针回到首位

end():重置指针,将数组指针指向最后一个元素

next():指针下移,取得下一个元素的值

prev():指针上移,取得上一个元素的值

current():获取当前指针对应的元素值

key():获取当前指针对应的下标值

注意事项:next和prev会移动指针,有可能导致指针移动到最前或者最后(离开数组),导致数组不能使用,通过next和prev不能回到真确的指针位置。只能通过end或者reset进行指针重置

3.2 数组遍历

3.2.1 foreach 遍历

语法:
foreach($数组变量 as [$下标 =>] $值){
    //通过  $下标  访问元素的下标;通过  $值  访问元素的值
}

索引数组:可以直接访问,key就是数组的下标 (一维数组)

$info=array('Tom','Mary','Jack');
foreach($info as $key=>$val){
  echo $key .'=' .$val;  // 0=Tom    1=Mary   2=Jack
};

关联数组(一维数组)

$info=array('name'=>'Tom','age'=>10);
foreach($info as $key=>$val){
  echo $key . '===' . $val; // name===Tom   age===10
};

关联数组(二维数组)

$info=array(
  array('name'=>'Tom','age'=>10),
  array('name'=>'Mary','age'=>20),
  array('name'=>'Jack','age'=>30)
);

foreach($info as $key=>$val){
  echo 'name is '.$val['name']. 'and age is '. $val['age'] . '</br>'; 
};

// name is Tom and age is 10
// name is Mary and age is 20
// name is Jack and age is 30

3.2.2 for 遍历

// 索引数组
$cars = array("porsche", "BMW", "Volvo");
$arrlength = count($cars);

for ($x = 0; $x < $arrlength; $x++) {
  echo $cars[$x];
  echo "<br>";
}

4 常用字符串函数

4.1 strlen() 函数和mb_strlen函数

strlen() 函数:返回字符串的长度,以字节为单位

mb_strlen() 函数:直接返回字符串的长度

如果字符串都是英文,则 strlen() 函数和mb_strlen函数返回的字符串长度一样;

如果字符串是中英文,strlen() 函数是返回计算后(以字节为单位:中文在utf-8字符集下占用3字节)的长度;mb_strlen函数则是直接返回字符串长度

<?php
$str1='abc';
echo strlen($str1);   // 输出:3
echo mb_strlen($str1);   // 输出:3

$str2='你好abc'; 
echo strlen($str2);   // 输出:9
echo mb_strlen($str2);   // 输出:5

中文在utf-8字符集下占用3字节

4.2 str_word_count() 函数

对字符串中的单词进行计数

echo str_word_count("Hello world!"); // 输出 2

4.3 strrev() 函数:反转字符串

echo strrev("Hello world!"); // 输出 !dlrow olleH

4.4 查找函数:strpos(), strrpos()

strpos(字符串,匹配字符):判断字符在目标字符串中出现的位置(首次)

strrpos(字符串,匹配字符):判断字符在目标字符串中最后出现的位置

  • 如果找到匹配,则会返回首个匹配的字符位置(从0开始)。如果未找到匹配,则将返回 FALSE
echo strpos("Hello world!","world");  //返回结果 6

4.5 替换函数: str_replace()

str_replace(匹配目标,替换的内容,字符串本身):将目标字符串中部分字符串进行替换

// 下面的例子用 "Kitty" 替换文本 "world":
echo str_replace("world", "Kitty", "Hello world!"); // 输出 Hello Kitty!

4.6 截取字符串 substr(), strstr()

substr(字符串,起始位置从0开始[,长度]):指定位置开始截取字符串,可以截取指定长度(不指定到最后)

strstr(字符串,匹配字符):从指定位置开始,截取到最后(可以用来去文件后缀名)

4.7 转换函数:implode(), explode(), str_split()

implode(连接方式,数组):将数组中的元素按照某个规则连接成一个字符串

$names=array('Sunny','Amy','Mark');
echo implode('=',$names);  // Sunny=Amy=Mark

explode(分割字符,目标字符串):将字符串按照某个格式进行分割,变成数组

$names='Sunny=Amy=Mark';
print_r(explode('=',$names)); // Array ( [0] => Sunny [1] => Amy [2] => Mark )

str_split(字符串,字符长度):按照指定长度拆分字符串,得到数组

4.8 去除空格函数 trim(), ltrim(), rtrim()

trim(字符串[,指定字符]):本身默认是用来去除字符串两边的空格(中间不行);但是也可以指定要去除的内容,是按照指定的内容循环去除两边有的内容:直到碰到一个不是目标字符为止

ltrim():去除左边的

rtrim():去除右边的

4.9 大小转换函数:strtolower(), strtoupper(), ucfirst()

strtolower:全部小写

strtoupper:全部大写

ucfirst:首字母大写

4.10 格式化函数:printf(), sprintf()

printf/sprintf(输出字符串有占位符,顺序占位内容..):格式化输出数据

4.11 str_repeat() :重复某个字符串N次

4.12 str_shuffle() :随机打乱字符串

4.13 htmlspecialchars() 函数:将特殊字符转为 HTML 实体

htmlspecialchars() 函数把特殊字符转换为 HTML 实体
比如可以将 < 和 > 之类的 HTML 字符会被替换为 &lt;&g
这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用
通过使用 htmlspecialchars() 函数能够避免 $_SERVER["PHP_SELF"] 被利用,是因为htmlspecialchars() 函数把特殊字符转换为 HTML 实体

$_SERVER["PHP_SELF"] 是一种超全局变量,返回当前执行脚本路径(带着文件名)

<?php
// 表单代码是这样的:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

// 现在,如果用户试图利用 PHP_SELF 变量,会导致如下输出:

<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

4.14 stripslashes函数:删除用户输入数据中的反斜杠(\)

//校验函数
function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

4.15 preg_match() 函数检索字符串的模式,如果模式存在则返回 true,否则返回 false

 //检查 name 字段是否包含字母和空格
    $name = test_input($_POST["name"]);
    if (!preg_match("/^[a-zA-Z ]*$/", $name)) {
      $nameErr = "只允许字母和空格!";
    }
	
	
	 $email = test_input($_POST["email"]);
    // 检查电邮地址语法是否有效
    if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) {
      $emailErr = "无效的 email 格式!";
    }
	
	 $website = test_input($_POST["website"]);
    // 检查 URL 地址语言是否有效(此正则表达式同样允许 URL 中的下划线)
    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%
=~_|]/i", $website)) {
      $websiteErr = "无效的 URL";
    }
posted @ 2023-10-09 17:45  songxia777  阅读(4)  评论(0编辑  收藏  举报