// 连接数据库:
$con = mysqli_connect('localhost','root','root');
PHP常用函数
echo('')输出
var_dump() //会返回变量的数据类型和值
print_r()//输出数组结构
str_word_count("Hello world!") //取单词个数
ltrim()//删首空
rtrim()//删尾空
trim()//删首尾空
addslashes()//转义
stripslashes()//反转义
strlen($str) //取字符串长度√
mb_strlen($str)//取文本长度√
strpos("
strstr($str1,$str2)//文本_取右边(原文本,从哪个文本开始)(包含当前字符)
substr($str,start,[lenth])//取文本中间(原文本,起始,[长度])√
substr_count($str1,$str2)//文本_取出现次数
str_replace("world", "Kitty", "Hello world!") //子文本替换(被替换文本,替换后文本,原文本)(区分大小写)√
str_ireplace("world", "Kitty", "Hello world!")//子文本替换(不区分大小写)
explode("|",$str);//文本分割√ 相当于JS中的split
implode("|",$str_arr);//文本合成√ 相当于JS中的join
substr_replace("Hello world!","Kitty",0,5);//文本替换
number_format(1896.96,2) 格式化字符串:1,896.96
strcmp($str1,$str2)//文本比较(区分大小写)
strcasecmp()//文本比较(不区分大小写)
strnatcmp($str1,$str2)//文本比较(自然运算法则,区分大小写,用于比较数字大小)
strncmp($str1,$str2,len)//比较前n个字符
preg_grep(/正则表达式文本/,str_arr);//正则匹配数组中的每一个成员,返回一个新子匹配文本数组
preg_match(/正则表达式文本/,str,str_arr);//正则.创建(非全局)返回值是0或1,返回数组是str_arr √
preg_match_all(/正则表达式文本/,str,str_arr);//正则.创建(全局)全局匹配,返回数组是str_arr √
preg_quote($str1,$str2);//对str1里的所有特殊字符进行转义,str2为指定字符
preg_replace(/正则表达式文本/,str1,str)//正则.替换(全局),在str中替换匹配到的文本为str1
preg_spilt(/正则表达式文本/,str)//正则.文本分割
list($a,$b,$c)=[1,2,3];-->$a=1; $b=2; $c=3;//用于将数组的每一个值,赋值给list函数的每一个参数,解构赋值
each($arr)//用于返回数组当前指针所在位的键值对!并将指针后移一位
count($arr,[COUNT_RECURSIVE]) //取数组成员数(),COUNT_RECURSIVE(或1)用于递归多维数组√
array_search($str1,$str_arr),//在数组str_arr中寻找str1,找到后返回键名,否则返回false
array_pop($str_arr) //给数组移出一个元素,返回被移出的元素√
array_push($str_arr,$str1,$str2) //给数组加入成员√
array_unique($str_arr)//删除数组中重复的元素
array_merge()//合并数组
urlencode($str) //URL编码
urldecode($str) //URL解码
mktime(hour,miunte,second,month,day,year,[is_dst])//获得本地化时间戳
time()//时间_取现行时间戳 (真)(10位时间戳)
date('Y-m-d H:i:s',timestamp)//时间戳转时间文本,timestamp省略时取现在时间
strtotime("2020-2-3 16:20:00")//时间文本转时间戳
getdate(timestamp)//取现行时间()(数组形式)
checkdate(month,day,year) //日期检查,返回布尔值
setcookie(cookie的变量名:name,变量的值:value,失效时间:expire,有效路径:path,有效的域名:domain,1为HTTPS有效,2为HTTP/HTTPS都有效:secure)
$_COOKIE[]读取cookie
setcookie("name","",time()-1)//删除cookie
session_start()//启动session
unset($_SESSION['user'])//删除会话
$_SESSION=array()//删除多个会话
session_save_path//获取session路径
session_destory()//结束当前会话
session_set_cookie_params()//设置失效时间
session_name()
session_id()
header("content-type:image/jpeg");
htmlspecialchars_decode() //将特殊的 HTML 实体转换回普通字符
strip_tags()//去除HTML标签
//在图片上写字
header("content-type:image/jpeg");
$im=imagecreatefromjpeg($url);
$textcolor=imagecolorallocate($im,255,255,255);
imagettftext($im,20,0,20,40,$textcolor,"C:\Windows\Fonts\msyh.ttf","我是水印");//写TTF文字到图中
imagejpeg($im);
imagedestroy($im);//结束图形,释放内存空间
//
//图片上加图
header("content-type:image/jpeg");
$src_im=imagecreatefromjpeg("180.jpg");//载入图片画布
$dst_im=imagecreatefromjpeg("tupian.jpg");//载入图片画布
$src_x = imageSX($src_im);
$src_y = imageSY($src_im);
imagecopy ($dst_im,$src_im,0,0 ,0, 0, $src_x, $src_y);
imagejpeg($dst_im);
imagedestroy($src_im)//结束图形,释放内存空间
//
fopen($filename,$mode)//打开文件--handle
mode:
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。(原来的EOF符不保留)
b 二进制(默认)
t 文本
// 忽略SSL证书
$stream_opts = [
"ssl" => [
"verify_peer"=>false,
"verify_peer_name"=>false,
]
];
//配置UA
ini_set('user_agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36');
fclose()//关闭文件
readfile($filename)//读入并输出文件,失败返回false
file($filename)//将文件内容按行输出到数组
file_get_contents($filename,[offset],[maxlen])//读入一个字符串
file_put_contents($filename,$str,[flags])//写入数据(重写)
base64_encode(hash_hmac('sha1', $srcStr, $secretKey, true));//使用 HMAC+base64 方法生成带有密钥的哈希值
fgets(handle,[length])//读取一行数据
fgetss(handle,[length],[tags])//读取一行数据,忽略HTML和PHP标记
fgetc(handle) //读取单个字符
fread(handle,length)//读取任意长度的字符
fwrite(handle,$str,[length])//写入数据
opendir(path)//打开目录
closedir(handle)//关闭目录
scandir(path)//浏览目录(返回数组)
mkdir(path)//创建目录
rewind(handle)//将文件handle的指针设为文件流的开头
fseek(handle,offset)//文件指针定位
feof(handle)//判断文件指针是否在文件尾
ftell(handle)//返回当前指针的位置
$_FILES[filename][name]
$_FILES[filename][size]
$_FILES[filename][type]
$_FILES[filename][tmp_name]
$_FILES[filename][error]//返回0说明文件上传成功
move_upload_file($filename,destination)//这里的$filename指tmp_name,destination为路径+名称
.串接
.=串接赋值
//for循环:
for ($i=1;$i<=10;$i++) {
语句;
}
//foreach循环:
foreach ($arr as $value) {
语句;
}
foreach ($arr as $k=>$v) {
语句;
}
优先级:&&>||>and>or
/**
* PHP发送请求
* @param string $api 接口地址
* @param array $postData POST请求数据
*/
function httpRequest($api, $postData = array())
{
//1.初始化
$ch = curl_init();
//2.配置
//2.1设置请求地址
curl_setopt($ch, CURLOPT_URL, $api);
//2.2数据流不直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//2.3POST请求
if ($postData) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
}
//curl注意事项,如果发送的请求是https,必须要禁止服务器端校检SSL证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//3.发送请求
$data = curl_exec($ch);
//4.释放资源
curl_close($ch);
return json_decode($data, true);
}
//常量
define("PI",3.14)
//数组
$cars=array("porsche","BMW","Volvo");
$cars=array(key1=>value1,key2=>value2,key3=>value3);
//数组排序函数
sort() - 以升序对数组排序
rsort() - 以降序对数组排序
asort() - 根据值,以升序对关联数组进行排序
ksort() - 根据键,以升序对关联数组进行排序
arsort() - 根据值,以降序对关联数组进行排序
krsort() - 根据键,以降序对关联数组进行排序
//对象
$this->可以调用本类中的成员变量/方法
//访问全局变量:
$GLOBALS[index]
//其他超全局变量
$_SERVER 保存关于报头、路径和脚本位置的信息
$_REQUEST 用于收集 HTML 表单提交的数据。
$_POST 广泛用于收集提交 method="post" 的 HTML 表单后的表单数据
$_GET 也可以收集 URL 中的发送的数据
$_FILES
$_ENV
$_COOKIE
$_SESSION
// thinkphp框架
// 路由地址直接指向appcation/index/controller/
Route::rule('路由表达式','路由地址','请求类型')
Route::get('路由表达式','路由地址')
Route::post('路由表达式','路由地址')
'[blog]'=>[
':id'=>['Blog/read',['method'=>'get']],
':name'=>['Blog/read',['method'=>'post']]
];
//Db操作数据库:(相当于sql语句)
//1.增:
Db::table('表名')->insert($data); //=>insert into 表名 ($k) values($v)
Db::table('表名')->getLastInsID()//获取自增ID
//2.删:
Db::table('表名')->where('id',1)->delete();//根据条件删除
//3.改:
Db::table('表名')->where('id',1)->update(['name'=>'thinkphp']);//=>update 表名 set name=thinkphp where id=1
//4.查:
Db::table('表名')->where('id',1)->find();//查询一条数据=>select * from 表名 where id=1
Db::table('表名')->select();//查询数据集
Db::table('表名')->where('id','>',1)->value('name');//读字段文本值
Db::table('表名')-where('status','<>',1)->column('name');//查询某一列的值(数组)
->order('id desc')//=>order by id desc
->field('id,username')//=>select id,username
Db:name方法用于带有前缀的表名
$this->success('新增成功','User/list')
$this->error('新增成功','User/list')
$this->redirect('http://thinkphp.cn',302)
//模板语法(name不需要加$,value需要加$)
//不解析输出
{literal}
{/literal}
//模板包含
{include file='' /}
//模板继承
{block name="title"}标题{/block}
//switch
{switch name=""}
{case value="0" break="1"}情况1{/case}
{case value="1" break="1"}情况2{/case}
{default /}默认
{/switch}
//eq
{eq name="user.sex" value="1"}男{/eq}
{neq name="user.sex" value="1"}男{/neq}
//if
{if condition="$user.name eq 'zhang'"}张三
{elseif condition=""}李四
{else/}
{/if}
//volist
{volist name="$list" id="item" offset="起始行" length="循环长度" empty="列表变量为空时占位符"}
{$循环变量名}
{/volist}
//foreach
{foreach name="users" item="item" key="index"}
{/foreach}
//是否赋值
{present name="sex"}赋值{/present}
{notpresent name="sex"}未赋值{/notpresent}
//空
{empty name="sex"}性别为空{/empty}
{notempty name="sex"}性别不为空{/notempty}
//ffmpeg框架(3.4.2)
# 安装 epel 库,如果以前装过可以不用
yum install -y epel-release
# 引入 nux.ro 的库
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
# 执行安装
yum install ffmpeg
//imagick库(3.4.3)
yum install ImageMagick
yum install ImageMagick-devel
yum install php-pear
yum -y install php-devel
安装imagick
pecl install imagick-3.4.3
//图片+文字
public function test(){
$imagick = new Imagick(WEB_ROOT.'test.gif');
$style['font_size'] = 24;
$style['fill_color'] = '#FFFFFF';
$style['font'] = WEB_ROOT . "font/msyhbd.ttf"; ///微软雅黑字体 解决中文乱码
$this->textttf($imagick,'测试', 50, 100, 0,$style);
header ( 'Content-type: ' . 'image/'.strtolower ($imagick->getImageFormat ()) );
ob_end_clean();
echo $imagick->getImagesBlob ();
}
//圆角:roundCorners
//旋转:rotateImage('white',60);
//图上贴图:compositeimage()$newimage,\Imagick::COMPOSITE_OVER, 0, 0)
//缩放:resizeImage(100,100,Imagick::FILTER_LANCZOS, 1)
// 添加水印文字
public function textttf(& $imagick, $text, $x = 0, $y = 0, $angle = 0, $style = array()) {
$draw = new ImagickDraw ();
if (isset ( $style ['font'] ))
$draw->setFont ( $style ['font'] );
if (isset ( $style ['font_size'] ))
$draw->setFontSize ( $style ['font_size'] );
if (isset ( $style ['fill_color'] ))
$draw->setFillColor ( $style ['fill_color'] );
if (isset ( $style ['under_color'] ))
$draw->setTextUnderColor ( $style ['under_color'] );
if (isset ( $style ['font_family'] ))
$draw->setfontfamily( $style ['font_family'] );
if (isset ( $style ['font'] ))
$draw->setfont($style ['font'] );
$draw->settextencoding('UTF-8');
if (strtolower ($imagick->getImageFormat ()) == 'gif') {
foreach ( $imagick as $frame ) {
$frame->annotateImage ( $draw, $x, $y, $angle, $text );
}
} else {
$imagick->annotateImage ( $draw, $x, $y, $angle, $text );
}
}
//gif图像尺寸改变
$pic=new Imagick($url);
header('Content-type: image/gif');
foreach ($pic as $frame) {
$frame->thumbnailImage(426, 500);
}
ob_end_clean();
echo $pic->getImagesBlob();
redis:
use think\cache\driver\Redis;
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// $redis->auth('password'); # 如果没有密码则不需要这行
//把 'test'字符串存入 redis
$redis->set('test_name', 'test');
$redis->get('test_name');//获取值
//$redis->keys('*')//键数组
lpush//unshift
rpush//push
rpop//pop
lpop//shift
lLen//length
rm//删除
clear//全部删除
$arList = $redis->lrange("tutorial-list", 0 ,-1);//获取列表
正则表达式实例:1.取src://i
2.取div:/
3./
?>
一键复制
编辑
Web IDE
原始数据
按行查看
历史