PHP所有能力都是函数,内置1000多个函数,不是每一个函数都默认直接可以使用,有一些需要安装或者启用额外的“插件”扩展。
1,获取字符串长度
<?php $str='hello'; echo strlen($str); //5
2,获取中文字符串(宽字符)的长度
strlen 只能获取拉丁文的长度
php中专门为宽字符集添加了一套API,所有的API 都是 mb_xxxx
echo mb_strlen('你好');
但是报错:Fatal error: Uncaught Error: Call to undefined function mb_strlen() in D:wwwsite2 2, string.php:7 Stack trace: #0 {main} thrown in D:wwwsite2 2, string.php on line 7
这是因为这一套 API 不在内置的 1000+ 里面,而是在一个模块(php_mbstring.dll)中,模块成员必须通过配置文件载入模块过后再使用
配置PHP扩展的步骤
1,在PHP的安装目录去创建一个 php.ini ( 将PHP目录中的 php.ini-development 复制一个 修改为 php.ini )
2, 修改扩展文件所在目录 extension_dir
3,;extension=php mbstring.dll ,去掉注释( 修改文件中的部分选项 ; 是注释符)
4,默认Apache加载的php.ini 是去 C: Windows目录找的
5,可以通过Apache的配置文件修改默认加载路径 PHPIniDir
3,常见字符串API
①字符串截取
第一个参数:被截取的字符串
第二个参数:从哪个位置开始截
第三个参数:截取的字符个数
②字符串长度
③大小写转换
strtolower:大写转小写
strtoupper:小写转大写
④去除首尾空白字符
⑤查找字符串中某些字符首次出现位置
⑥字符串替换
用 b 替换 a
⑦重复字符串
第一个参数:重复的字符串
第二个参数:重复多少次
⑧字符串分割
4,数组处理
php中的数组类型:索引数组、关联数组
php中定义数组的方式:array( ) 、 [ ] (php 5.4+)
①获取关联数组中全部的键/值
arrar_keys() array_values()
<?php $arr=array( 'hello' => '你好', 'pink' => '粉色', 'blue' => '蓝色', ); var_dump(arrray_key($arr)); //['hello','pink','blue'];
var_dump(array_values($arr)); //['你好','粉色','蓝色'];
②判断数组中是否存在某个键
array_key_exists()
<?php $arr=array( 'hello' => '你好', 'pink' => '粉色', 'blue' => '蓝色', ); var_dump(array_key_exists('hello',$arr)); //bool(true) var_dump(array_key_exists('world',$arr)); //bool(false)
isset也可判断数组中是否有指定的键
<?php $arr=array( 'hello' => '你好', 'pink' => '粉色', 'blue' => '蓝色', ); if(isset($arr['hello'])){ echo $arr['hello']; //你好 } else{ echo '没有'; }
empty与isset相反, empty($arr['foo']) 相当于 ! isset ( $arr [ 'foo' ] ) || $arr['foo'] == false
<?php $arr=array( 'hello' => '你好', 'pink' => '粉色', 'blue' => '蓝色', ); if(empty($arr['foo'])){ echo '没有'; } else{ echo $arr['foo']; }
③去除重复的元素
array_unique()
④将一个或多个元素追加到数组中
array_push()
$arr[ ] = 'new value'
$arr=Array('red' , 'orange' , 'yellow'); array_push($arr,'blue'); var_dump($arr);
$arr=Array('red' , 'orange' , 'yellow'); $arr[]='black'; var_dump($arr);
⑤删除数组中最后一个元素
array_pop();
$arr=Array('red' , 'orange' , 'yellow'); array_pop($arr); var_dump($arr);
⑥数组长度
count()
$arr=Array('red' , 'orange' , 'yellow'); var_dump(count($arr));
⑦检测存在
in_array()
$arr=Array('red' , 'orange' , 'yellow'); var_dump(in_array('red',$arr)); //true
5,时间处理
①时间戳:time()
从 Unix纪元(格林威治时间 1970-01-01 00:00:00)到当前时间的毫秒数
<?php
echo time(); //1569216880
②格式化日期:date()
格式化一个时间戳:
echo date('Y-m-d H:i:s', time()); //=date('Y-m-d H:i:s');
第一个参数:一个时间格式
第二个参数:一个时间戳,默认时间戳获取的就是格林威治时间
问题:获取到的时间与当前时间相差8个小时
解决:方式一,通过代码设置时区,更推荐这种方式 date_default_timezone_set('PRC');
方式二:通过配置文件设置时区 date.timezone = PRC
对已有事件做格式化:
strtotime() 可以用来将一个有格式的时间字符串转换为一个时间戳
<?php date_default_timezone_set('PRC'); $time='2019-09-23 11:34:58'; echo date('Y年m月d日 H:i:s',strtotime($time)); //2019年09月23日 11:34:58 echo date('Y年m月d日<b >H:i:s',strtotime($time)); // 2019年09月23日 11:34:58 echo date("Y年m月d日<b >H:i:s",strtotime($time)); //2019年09月23日11:34:58
注意:单引号字符串的问题
单引号:是对date函数的处理,单引号中的<b >可以换行
双引号:是对字符串的处理,<b >不能换行
⑥PPH中的常量
①PHP 中可以通过 define 函数定义 一个常量
②常量的特点就是:定义后不能被修改,也是临时存放数据的容器
③ 什么时候用常量:一般程序的配置信息(不会在运行过程中修改)都会在常量中定义
④PHP中的常量的命名规则
变量或函数都是采用 snake_case (小写字母加下划线)命名规则
常量是 SNAKE_CASE 命名规则
define('SYSTEM_NAME', '阿里百秀'); echo SYSTEM_NAME; // 阿里百秀 define('SYSTEM_VERSION', '阿里', true); echo SYSTEM_VERSION; //阿里 echo system_version; //阿里
第一个参数常量名称
第二个是常量的值
第三个参数是常量名称是否忽略大小写 默认为false 不忽略
6,载入其他文件
PHP中引入其他PHP文件有四种方式:
require
require_once
include
include_once
config.php(定义公共的配置信息)
1. 便于维护
2. 公共使用
<?php define('SYSTEM_NAME', 'HELLO'); define('SYSTEM_VERSION', '1.0.0'); define('DB_HOST', '192.168.110.120');
require.php
<?php require 'config.php'; echo SYSTEM_NAME;
//类似CSS的 import 导入文件,require 可以用于在当前脚本中载入一个别的脚本文件并且执行它,require在每一次调用的时候都会载入对应的文件
<?php require_once 'config.php'; echo SYSTEM_NAME; require_once 'config.php'; echo SYSTEM_NAME;
//require_once 如果之前载入过,不再执行(执行一次),由于类似定义常量 定义函数 ,这种操作不能执行多次,所以require_once 更加适合载入这种文件(定义公共的配置信息)
aside.php
<aside>
这是侧边栏1111
</aside>
include.php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <?php include 'aside.php'; ?> <main> 这是主要的区域 </main> </body> </html>
require:一旦被载入的文件不存在就会报一个致命错误,当前文件不再往下执行 (不会任何输出)
include:载入文件不存在不会报错误(会有警告,警告不用管),当前文件继续执行 (打印出 “只是主要区域”)