``php基础知识点总结
php常用语句
输出 打印语句
最基本语句
测试输出个hello word <?php echo 'hello word!' ?>
echo的用法
形式一 <?php _e('需要输出的文本内容'); ?>
形式二 <?php echo '需要输出的内容' ?>
和<?php echo 需要输出的变量 ?>
形式三 <?php echo(函数); ?>
形式四 <?php echo "用户名:{$name} <br/>密码:123456"; ?>
其中$name
为php变量
多个输出内容之间用.
连接 或者 ,
函数及变量和语句混合时,函数和变量用用一对括号{}
包裹
<?php
echo 'This ','string ','was ','made ','with multiple parameters.';
?>
形式四
<?php _e('目前有 <em>%s</em> 篇文章, 并有 <em>%s</em> 条关于你的评论在 <em>%s</em> 个分类中.',
$stat->myPublishedPostsNum, $stat->myPublishedCommentsNum, $stat->categoriesNum); ?>
逗号,前输出部分,逗号,后面对应参数
其他形式 输出 打印语句
print_r('打印测试语句');
<?php
print "I love you!";
?>
echo()
函数比 print()
速度稍快
php输出语句里可以直接嵌套html代码
例如:
<?php _e('当前网页 <strong>不支持</strong> 你正在使用的浏览器. 为了正常的访问, 请 <a href="http://browsehappy.com/">升级你的浏览器</a>'); ?>
输出语句 echo()
,print()
,print_r()
三者的区别
var_dump()
函数用于输出变量的相关信息。
输出空格echo ' ';
或者 echo " ";
引号的使用
单引号和双引号的区别。
双引号可以解析变量名、数组值和对象属性的方法;
遇到$符号,解析器会尽可能多地取得后面的字符以组成一个合法的变量名;
可以使用花括号把变量名括起来,方便解析。
---而 单引号将输出变量名称,而不是值
纯字符串引用时用单引号, 单引号效率更高
示例:
<?php
$ip = $_SERVER["REMOTE_ADDR"];
echo "Roses are $ip";
echo "<br>";
echo 'Roses are $ip';
?>
输出结果为
Roses are 127.0.0.1
Roses are $ip
多层引号嵌套使用时,应使用 反斜杠\
转义
变量包含在引号内时 可以用一对大括号包裹来区分开 示例$ip
可以 写作 ${ip}
或 {$ip}
逗号,
与句号(点).
的使用
两者都可以用来 字符串连接,但 相对来说 逗号,
执行速度更快
if语句
`
<?php if (): ?>开始执行第一个判断
<?php elseif (): ?>进行第二个判断
执行
<?php else: ?> 都不满足以上两个判断条件
执行
<?php endif; ?> 结束语句
`
html文件内写入php的if语句
<!--{if($mid==$uid)}-->
<!--{else}-->
<!--{/if}-->
疑点:值等于0 与 真假的问题
逻辑与或非(&& || !)
$GLOBALS超全局变量
<?php
//on 为开启
//off&其他 为关闭
$GLOBALS['isAutoNav'] = 'off'; //自动设置导航栏中 margin 及 width 值(推荐开启)
$GLOBALS['isIconNav'] = 'off'; //将导航栏中的 1,2,3 替换成 Emoji 图标
$GLOBALS['isRSS'] = 'off'; //在菜单栏中加入 RSS 按钮
$GLOBALS['style_BG'] = ''; //背景图设置。填入图片 URL 地址,留空为关闭
来自主题Story下config.php文件
使用示例:
if ($GLOBALS['isIconNav'] == 'on')
超全局变量 服务器端的session
session_start();
$_SESSION["tempcid"]=$cid; // 定义一个超全局变量用于记录最近上一次存储的分类cid
其他页面调用
if($v['id'] == $_SESSION["tempcid"])
备注:与cookie的不同在于它是服务器端的临时储藏室。session常被称作会话。
要想使用session,必须启动session。session_start();就是启动session的方法。一般要写在最前面。
php函数
isset()
用于检测变量是否已设置并且非 NULL(判断变量是否被设置且不为NULL)!empty
不为空
示例:
if(isset($_GET['FinalVotenum'])){
$nowvotes = 111;
}
elseif(!empty($_GET['FinalVotenum'])){
$nowvotes = 222;
}
else{
$nowvotes = 333;
}
注解:判断FinalVotenum是否被申明且不为空,再进一步 判断值是否为空
比较运算符
== 等于 === 绝对等于 != 不等于 <> 不等于 !== 绝对不等于
大于 < 小于 >= 大于等于 <= 小于等于
举例-- 来自links站点的案例
<!--{if($v['id'] != 0 && $v['id'] != 1 && $v['id'] != 2)}-->
<!--{/if}-->
页面编码
header("Content-type: text/html; charset=utf-8");
php页面为gbk编码:
header("Content-type: text/html; charset=gb2312");
php页面为big5编码:
header("Content-type: text/html; charset=big5");
通常情况把以上代码放在php页面的首页即可。
returnde
的用法 ,exit
的用法
基本用法:
1.return expression // 返回一个表达式结果
2.return(expr) // 函数表达式
3.return // 直接返回,或返回空值
php如何换行
以下给出几种方法PHP_EOL
定义常量 用于换行
使用方法 .PHP_EOL .
拼接在其他输出语句中echo PHP_EOL;
// 换行符
或者 ---内嵌 echo '<br/>';
刷新 跳转页面
header("location:url");
header("Location: {$url}");
$url
这里面 赋值 路径header("refresh:秒数;url=当前页面")
延迟几秒跳转
内置函数
如 pathinfo
,parse_url
parse_url()
用于解析URL ,将url的每个部分分隔开组成数组
示例:$arr = parse_url($url); 请求协议
$arr['scheme'] 主机
$arr['host'] 路径
$arr['path'] 查询参数
$arr['query']` 等等
内置变量
如 $_SERVER
函数内调用函数外的变量
1.函数内用global声明一下变量
举例
$link="www.beiduoye.com";
function diy() {
global $link;
echo $link;
}
2.用作参数传递
$link="www.beiduoye.com";
function diy($link) {
echo $link;
}
函数外调用函数内的变量
1.函数内使用global声明变量
function diy() {
global $link;
$link="www.beiduoye.com";
}
echo $link;
2.函数内使用数组$GLOBALS['变量名']
$x=5;
$y=10;
function myTest()
{
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
myTest();
echo $y;
php代码拼接用.
$file = "./cache/".$iconName.".png";
使用 匿名函数和use关键字
ceil()
函数 向上取整
应用在 like站点的 显示页数$maxPage=ceil($UrlCount/30);
intval()
函数
直接取整,舍弃小数,保留整数
应用在 获取壁纸get_bg.php
页面$intbgkey=intval($bgkey);
引入导入其他页面
include_once("./rand_bg/get_bg.php");
array_keys()
函数
将数组的键名 生成一个新的数组
php调试 及 控制台 打印
echo "<script>console.log('欧耶,成功了23333!');</script>";
echo("<script>console.log('欧耶,成功了666!');</script>");
要在前台html输出才行 只后台运行 不起作用
通过内置函数 打印 phpinfo();
或者 php版本 phpversion();
打印日志error_log();
写入数据
fwrite()
函数
内容写入一个打开的文件中
fopen(文件名,"rb+")
参数 "rb+" 定位到指定位置
strtotime()
函数
将任何字符串的日期时间描述解析为 Unix 时间戳
示例:$time = strtotime("2018-01-18 08:08:08");
或者 strtotime('now');
正则表达式 获取url的主机
$s1=$v['url'];
$s2 = preg_replace("(^https?://)", "", $s1 );
$s3 = preg_replace("/\/.*/si","",$s2);
echo $s3;
判断是否是手机端
<?php
function is_mobile() {
if (empty($_SERVER['HTTP_USER_AGENT'])) {
$is_mobile = false;
} elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mobi') !== false ) {
$is_mobile = true;
}else{
$is_mobile = false;
}
return $is_mobile;
}
?>
调用方法
<?php
if(is_mobile){
//手机端代码
}else{
//PC端代码
}
?>
三目运算符(三元运算符)
原代码<?php if($v['vcard'])echo $v['vcard'];else echo './img/default.jpg'; ?>
修改后<?php $vcard = $v['vcard'] ?: './img/default.jpg'; echo $vcard; ?>
嵌套html或者js
<?php if (条件) { ?>
<?php } ?>
addslashes()
函数返回在预定义的字符前添加反斜杠的字符串。
用于 对单引号 ,双引号 反斜杠等 转义
implode()
函数 把数组元素组合为字符串
定义常量define()
函数
示例define("UID", 1);
请求头,头文件header("Content-Security-Policy: default-src 'self'");
header("Content-Security-Policy: upgrade-insecure-requests");
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Origin: *');
// 允许所有来源访问header("Access-Control-Allow-Methods: *");
// 允许所有的请求方式header('Access-Control-Allow-Headers: *');
// 允许携带任意的请求头header('Access-Control-Allow-Credentials: true');
// 允许客户端携带验证信息,例如 cookie 之类的
以下情况 不报错'Access-Control-Allow-Origin: https://www.itsk.com'
strval()
函数
转化为字符串的函数
explode() 函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组。
类似与 js的split()
方法
示例:
$str = "www.beiduoye.com";
print_r (explode(".",$str));
结果返回如下数组Array ([0] => www [1] => beiduoye [2] => com )
时区设置Asia/Chongqing
(重庆)
Asia/Shanghai
(上海)
Asia/Urumqi
(乌鲁木齐)
Asia/Macao
(澳门)
Asia/Hong_Kong
(香港)
Asia/Taipei
(台北)
示例: date.timezone = Asia/Shanghai
或者 date_default_timezone_set('Asia/Shanghai');
或 ini_set('date.timezone', 'Asia/Shanghai');
直接设置 中国时区 date_default_timezone_set('PRC');
想永久设置 时区 可以通过 修改 php.ini
配置文件date.timezone = PRC
或者 date.timezone = Asia/Shanghai
修改mysql配置文件my.cnf实现永久性修改时区 在文件中找到[mysqld]
语句块下 添加 default-time_zone = '+8:00'
修改后 可用 sql语句 select NOW()
查询当前时间
strlen() 函数返回字符串的长度。
示例:
if(strlen($name) < 1) {
return_json(0, "请填写分类名称");
}
end()
函数将内部指针指向数组中的最后一个元素
书签站点 添加分类 默认最后一个位置
设置文件权限chmod(文件路径, 0777);
strlen函数
获取字符串 string 的长度
示例:$str = 'hello';
echo strlen($str);
将会输出5
也可用于 获取二进制文件流的大小 (links站点获取图标时 文件大小限制)$fileCon = file_get_contents($iconLink);
echo strlen($fileCon);
mb_strlen()
函数
过设置字符编码 获取中文字符串的长度
示例:echo mb_strlen("贝多叶beiduoye");
mb_strlen($str, 'utf-8');
或者 通过 filesize
函数 获得文件大小
读取文件 相关函数fopen()
函数 打开一个文件或 URLfread()
函数 读取打开的文件feof()
函数 检查是否已到达文件末尾(EOF)fclose()
函数 关闭打开的文件。
进制转换bin2hex()
函数把 ASCII 字符的字符串转换为十六进制值
示例:
$str = bin2hex("hangzhou");
echo($str);
error_reporting()
函数
// 关闭错误报告error_reporting(0);
// 报告 runtime 错误
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// 报告所有错误
error_reporting(E_ALL);
// 等同 error_reporting(E_ALL);
ini_set("error_reporting", E_ALL);
// 报告 E_NOTICE 之外的所有错误
error_reporting(E_ALL & ~E_NOTICE);
获取用户 浏览器,操作系统等信息$_SERVER['HTTP_USER_AGENT']
获取 客户端(访问者)ip地址$_SERVER["REMOTE_ADDR"];
代理ip地址getenv("HTTP_X_FORWARDED_FOR")
file_get_contents
与curl
Mysql的utf8与utf8mb4区别,utf8mb4_bin、utf8mb4_general_ci与utf8mb4_unicode_ci的选择
字符除了需要存储,还需要排序或比较大小,涉及到与编码字符集对应的 排序字符集(collation)。ut8mb4对应的排序字符集常用的有 utf8mb4_unicode_ci
、utf8mb4_general_ci
其他 未搞懂的知识点
数组 对象 资源 常量 定界符
在php的配置文件(php.ini
)开启 short_open_tag
可以启用 php的简化语法<?=$ip?>
即 使用 <?=
以代替 <? echo
---不推荐 使用 不推荐 简化语法---
include
语句 和 require
语句
include 和 require 语句用于在执行流中插入写在其他文件中的有用的代码。require
在文件没有正常导入的情况 后面代码会不执行。即 所所导入的文件出错或者不存在 就会中断。
使用是 可以带括号也可以不带括号 示例:include("header.php");
和 include 'header.php';
require_once
载入导入文件 include_once
与include
区别
区别在于 include_once
是: 如果已经导入过(载入过) 就不会重新载入
__DIR__
常量变量(constant variable) 也称 魔术常量
用来表示 当前的路径(会根据访问位置动态变化) ,即 脚本所在的目录
而 __FILE__
表示 当前文件的绝对地址(包括自身文件在内),
与 __DIR__
的区别是 : __DIR__
只表示路径目录 不包括自身文件dirname(__FILE__)
当前文件所在的绝对目录dirname(dirname(__FILE__))
当前文件的上一层目录名
json_encode()
用于对变量进行 JSON 编码,将数据转化为json
格式
通常用作 数组 转换为json
格式 数据
解决中文乱码json_encode($data, JSON_UNESCAPED_UNICODE);
或者 使用urlencode($data);
相反 json_decode
对 JSON 格式的字符串进行解码,转换为 PHP 变量
虚拟主机 无法使用 file_get_contents()
函数
为了使用file_get_contents()
函数,可以开启php.ini
配置文件 allow_url_fopen
来 获取站点图标allow_url_fopen = On
代码 延迟执行usleep()
函数延迟代码执行若干微秒。sleep()
函数延迟执行当前脚本若干秒。usleep()
单位是微秒,1秒 = 1000毫秒 ,1毫秒 = 1000微秒,即1微秒等于百万分之一秒
serialize()
函数 序列化对象或数组,并返回一个字符串。
判断网址 dns
记录 是否存在 - 检测 域名的真实性checkdnsrr($url, 'ANY')
header
的7种用法
- 跳转页面
header('Location:'.$url);
//Location和":"之间无空格。
- 声明content-type
header('content-type:text/html;charset=utf-8');
- 返回response状态码
header('HTTP/1.1 404 Not Found');
- 在某个时间后执行跳转
header('Refresh: 10; url=http://www.baidu.com/');
//10s后跳转。
- 控制浏览器缓存
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
- . 执行http验证
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
- 执行下载操作
header('Content-Type: application/octet-stream');
//设置内容类型header('Content-Disposition: attachment; filename="example.zip"');
//设置MIME用户作为附件header('Content-Transfer-Encoding: binary');
//设置传输方式header('Content-Length: '.filesize('example.zip'));
//设置内容长度
imagecreatefrom
系列函数用于从文件或 URL 载入一幅图像
用于 修改图片数据imagecreatefromgif()
:创建一块画布,并从 GIF 文件或 URL 地址载入一副图像imagecreatefromjpeg()
:创建一块画布,并从 JPEG 文件或 URL 地址载入一副图像imagecreatefrompng()
:创建一块画布,并从 PNG 文件或 URL 地址载入一副图像imagecreatefromwbmp()
:创建一块画布,并从 WBMP 文件或 URL 地址载入一副图像imagecreatefromstring()
:创建一块画布,并从字符串中的图像流新建一副图像
经过反复尝试 无法对ico格式的图片 操作
判断浏览器的类型 $_SERVER['HTTP_USER_AGENT']
if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 8.0"))
echo "Internet Explorer 8.0";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 7.0"))
echo "Internet Explorer 7.0";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 6.0"))
echo "Internet Explorer 6.0";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Firefox/3"))
echo "Firefox 3";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Firefox/2"))
echo "Firefox 2";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Chrome"))
echo "Google Chrome";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Safari"))
echo "Safari";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Opera"))
echo "Opera";
else echo $_SERVER["HTTP_USER_AGENT"];
语言$_SERVER['HTTP_ACCEPT_LANGUAGE']
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4); //只取前4位,这样只判断最优先的语言。如果取前5位,可能出现en,zh的情况,影响判断。
if (preg_match("/zh-c/i", $lang))
echo "简体中文";
else if (preg_match("/zh/i", $lang))
echo "繁體中文";
else if (preg_match("/en/i", $lang))
echo "English";
else if (preg_match("/fr/i", $lang))
echo "French";
else if (preg_match("/de/i", $lang))
echo "German";
else if (preg_match("/jp/i", $lang))
echo "Japanese";
else if (preg_match("/ko/i", $lang))
echo "Korean";
else if (preg_match("/es/i", $lang))
echo "Spanish";
else if (preg_match("/sv/i", $lang))
echo "Swedish";
else echo $_SERVER["HTTP_ACCEPT_LANGUAGE"];
ISO 语言代码
zh 中文
zh-CN 中文,中国
zh-HK 中文,香港
zh-TW 中文,台湾
zh-SG 中文,新加坡
en 英语
en-us 英语(美国)
ISO 国家代码
move_uploaded_file()
函数把上传的文件移动到新位置。
当前日期时间echo date("Y n j l H:i:s");
显示结果示例: 2019 7 25 Wednesday 06:40:12
或者 echo date('Y-m-d H:i:s',time());
通过date函数格式化时间戳
urlencode()
函数是PHP中的一个内置函数,用于对url进行编码。
示例:echo urlencode("https://www.beiduoye.cn/") . "<br>";
会将/
及:
还有?
等特殊字符 都转义
暂无评论