OneStep

php基础知识点

Toc目录

``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 "&nbsp;&nbsp;";

引号的使用
单引号和双引号的区别。

双引号可以解析变量名、数组值和对象属性的方法;
遇到$符号,解析器会尽可能多地取得后面的字符以组成一个合法的变量名;
可以使用花括号把变量名括起来,方便解析。

---而 单引号将输出变量名称,而不是值
纯字符串引用时用单引号, 单引号效率更高
示例:

<?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=当前页面")  延迟几秒跳转

内置函数

pathinfoparse_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() 函数 打开一个文件或 URL
fread() 函数 读取打开的文件
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_contentscurl

Mysql的utf8与utf8mb4区别,utf8mb4_bin、utf8mb4_general_ci与utf8mb4_unicode_ci的选择

字符除了需要存储,还需要排序或比较大小,涉及到与编码字符集对应的 排序字符集(collation)。ut8mb4对应的排序字符集常用的有 utf8mb4_unicode_ciutf8mb4_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_onceinclude区别
区别在于 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种用法

  1. 跳转页面

header('Location:'.$url); //Location和":"之间无空格。

  1. 声明content-type

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

  1. 返回response状态码

header('HTTP/1.1 404 Not Found');

  1. 在某个时间后执行跳转

header('Refresh: 10; url=http://www.baidu.com/'); //10s后跳转。

  1. 控制浏览器缓存

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");

  1. . 执行http验证

header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');

  1. 执行下载操作

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>";
会将/:还有?等特殊字符 都转义

支付宝打赏 微信打赏

免责声明:本站多数资源来源于互联网。少数原创内容为本人随意书写不对其负任何法律责任(均为键盘和鼠标自行敲击),部分有助于网友的内容仅供学习与交流。如有转载、盗链等其它行为产生对国家社会网络不良影响均与本人无关。
版权说明:未经博主授权禁止转载、摘编、复制或建立镜像。对既成事实本站将保留所有的权利。

      




发表评论

发表新评论

请输入本站名:

暂无评论   

发送消息!
onestep
网站二维码
手机扫一扫,查看
.
贝多叶@聚合支付

真诚赞赏,手留余香

使用微信扫描二维码完成支付