现在想想 感觉已经快把php抛弃了~太久不敲代码,手是真的生了,以前虽然学了不少,但是基本上已经还给老师了,正好为渗透巩固下基础,再来学一遍!
挑选自己不会的记录下来~
php内置常量
<?php
echo(__FILE__); //文件的路径以及路径名字
echo"</br>";
echo(__FUNCTION__);//返回函数定义时候的名字
echo"</br>";
echo(__DIR__);
echo"</br>";
echo(PHP_OS);//操作系统类型
echo"</br>";
echo(PHP_VERSION);//php的版本
?>
php全局变量
<?php
$room=20;
function getRoom(){
echo $room."这是函数内部";
}
echo $room."这是代码间访问";
?>
28bb062b36c03af8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
如果想要在函数体内部输出
第一种方法:
<?php
$room = 20;
function getRoom(){
global $room;
echo $room ."这是函数内部";
}
getRoom();
echo "</br>";
echo $room."这是代码间访问";
?>
第二种方法:
<?php
$room = 20;
function getRoom(){
$room = $GLOBALS['room'];
echo $room ."这是函数内部";
}
getRoom();
echo "</br>";
echo $room."这是代码间访问";
?>
变量的销毁
如果是全局变量则不会被销毁,如果是局部变量则会被销毁。
<?php
function getRoom(){
global $a; //全局变量
unset($a);
}
$a = 20;
getRoom();
echo "</br>";
echo $a;
?>
//局部变量
<?php
function getRoom(){
$a = 20; //局部变量
unset($a);
echo $a;
}
getRoom();
echo "</br>";
echo $a;
?>
单引号 与双引号的区别
<?php
$a = 20;
echo '$a';
echo "</br>";
echo "$a";
?>
计算字符串的长度
<?php
$people = "123456789 qwe";
echo strlen($people);
?>
统计字符串中单词的个数
<?php
$people = "123456789 this is a people.";
echo str_word_count($people);
?>
清理字符串中的空格
<?php
$people = " 123456789 this is a people. ";
echo ltrim($people)."end";//清理左侧空格
echo "</br>";
echo rtrim($people)."end";//清理右侧空格
echo "</br>";
echo trim($people)."end";//清理两侧的空格
?>
字符串的切分与组合
<?php
$a = "1 2 3 4 5 6";
$b = "1-2-3-4-5-6";
$c = explode(' ',$a);
$d = explode('-',$b);
echo implode('*',$c);
echo implode('@',$d);
?>
字符串转换大小写
<?php
$a = "hello i miss you";
echo strtolower($a)."</br>";//转换为小写
echo strtoupper($a)."</br>";//转换为大写
echo ucfirst($a)."</br>";//整个字符串首字母大写
echo ucwords($a)."</br>";//整个字符穿中 带空格为分隔符的首字母大写
?>
数组遍历
<?php
$prices_per_day = array('单床房'=> 298,'标准间'=> 268,'三床房'=> 198,'VIP套房'=> 368);
foreach ($prices_per_day as $price){
echo $price."<br />";
}
foreach ($prices_per_day as $key => $value){
echo $key.":".$value." 每天。<br />";
}
reset($prices_per_day);
while ($element = each($prices_per_day)){
echo $element['key']."\t";
echo $element['value'];
echo "<br />";
}
reset($prices_per_day);
while (list($type, $price) = each($prices_per_day)){
echo "$type - $price<br />";
}
?>
遍历多维数组
<?php
$roomtypes = array( array( 'type'=>'单床房',
'info'=>'此房间为单人单间。',
'price_per_day'=>298
),
array( 'type'=>'标准间',
'info'=>'此房间为两床标准配置。',
'price_per_day'=>268
),
array( 'type'=>'三床房',
'info'=>'此房间备有三张床',
'price_per_day'=>198
),
array( 'type'=>'VIP套房',
'info'=>'此房间为VIP两间内外套房',
'price_per_day'=>368
)
);
for ($row = 0; $row < 4; $row++){
while (list($key, $value ) = each( $roomtypes[$row])){
echo "$key:$value"."\t |";
}
echo '<br />';
}
?>
字符串与数组的转换
<?php
$prices_per_day = array('单床房'=> 298,'标准间'=> 268,'三床房'=> 198,'VIP套房'=> 368);
echo implode('元每天/ ',$prices_per_day).'<br />';
$roomtypes ='单床房,标准间,三床房,VIP套房';
print_r(explode(',',$roomtypes));
?>
数组 添加删除元素
<?php
$clients = array('李丽丽','赵大勇','方芳芳');
array_unshift($clients, '王小明','刘小帅'); //头部添加
print_r($clients);
?>
<?php
$clients = array('李丽丽','赵大勇','方芳芳'); //尾部添加
array_push($clients, '王小明','刘小帅');
print_r($clients);
?>
<?php
$serivces = array('洗衣','订餐','导游','翻译');
$deletedserivces = array_shift($serivces); //删除第一个元素
echo $deletedserivces."<br />";
print_r($serivces);
?>
<?php
$serivces = array('s1'=>'洗衣','s2'=>'订餐','s3'=>'导游','s4'=>'翻译');
$deletedserivces = array_pop($serivces); //删除最后一个元素
echo $deletedserivces."<br />";
print_r($serivces);
?>
查询数组中的指定元素
<?php
$roomtypes = array( '单床房','标准间','三床房','VIP套房');
$prices_per_day = array('单床房'=> 298,'标准间'=> 268,'三床房'=> 198,'VIP套房'=> 368);
if(in_array( '单床房',$roomtypes)){echo '单床房元素在数组$roomtypes中。<br />';}
if(array_key_exists( '单床房',$prices_per_day)){echo '键名为单床房的元素在数组$prices_per_day中。<br />';}
if(array_search( 268,$prices_per_day)){echo '值为268的元素在数组$prices_per_day中。<br />';}
$prices_per_day_keys = array_keys($prices_per_day);
print_r($prices_per_day_keys);
$prices_per_day_values = array_values($prices_per_day);
print_r($prices_per_day_values);
?>
删除数组中的重复元素
<?php
$prices_per_day = array('单床房'=> 298,'标准间'=> 268,'三床房'=> 198,'四床房'=> 198,'VIP套房'=> 368);
$prices_per_day2 = array('单床房'=> 298,'标准间'=> 268,'四床房'=> 198,'三床房'=> 198,'VIP套房'=> 368);
print_r(array_unique($prices_per_day));
print_r(array_unique($prices_per_day2));
?>
数组的序列化与反序列化
<?php
$arr = array('王小明','李丽丽','方芳芳','刘小帅','张大勇','张明明');
$str = serialize($arr);
echo $str."<br /><br />";
$new_arr = unserialize($str);
print_r($new_arr);
?>
php操作文件读取
<?php
//php的文件操作
//1.定位文件的路径(完全路径)
$file_full_path = 'f:/1.txt';
//2.判断文件是否存在
if (file_exists($file_full_path)){
//3.打开文件
//fopen是打开文件的函数,获取到文件的指针资源
$fp = fopen($file_full_path, 'r');
echo "<pre>";
//var_dump($fp);
//4.获取文件的大小
$fileinfo_arr = fstat($fp);
//var_dump($fileinfo_arr);
//输出文件的信息
date_default_timezone_set('PRC'); //设置时区
echo '<br> 文件大小是:' . $fileinfo_arr['size'];
echo '<br> 文件的创建时间:' . date('Y-m-d H:i:s',$fileinfo_arr['ctime']);
echo '<br> 文件的修改时间:' . date('Y-m-d H:i:s',$fileinfo_arr['mtime']);
echo '<br> 文件的访问时间:' . date('Y-m-d H:i:s',$fileinfo_arr['atime']);
}else {
echo "不存在,请检查路径";
}
//大文件适合用这种
<?php
$file_path = 'f:/1.txt';
if (file_exists($file_path)){
$fp = fopen($file_path, 'r');
//设置缓冲
$buffer='';
$buffer_size = 1024;
$con_str = '';
//开始一次读取 buffer_size 循环读取
//!feof($fp)如果没有到结束 就继续读取!
while (!feof($fp)){
$buffer = fread($fp, $buffer_size);
$con_str .=$buffer;
}
//关闭文件
fclose($fp);
//替换换行
$con_str = str_replace("\r\n",'<br>', $con_str);
$con_str = str_replace("\n",'<br>', $con_str);
echo $con_str;
}else {
echo '<br>. 该文件不存在!';
}
file_get_contents()
//适合使用小文件的 10M 大小之内!
<?php
//使用最多的第三种方式
//简洁方式
$file_path = 'f:/1.txt';
if (file_exists($file_path)){
$con_str = file_get_contents($file_path);
$con_str = str_replace("\n\r", '<br>', $con_str);
$con_str = str_replace("\n", '<br>', $con_str);
echo $con_str;
}else {
echo "文件不存在";
}
<?php
// 定义配置文件 读取文件
//路径
$file_path = 'config.ini';
$arr_ini = parse_ini_file($file_path);
echo "<pre>";
var_dump($arr_ini);
echo '<br> user = ' . $arr_ini['user'];
echo '<br> pwd = ' . $arr_ini['pwd'];
php操作文件写入
<?php
$file_path = 'f:/hello word.txt';
if (!file_exists($file_path)){
//创建并写入
$fp = fopen($file_path, 'w');
$con = '';
for ($i=0;$i<10;$i++){
$con .= "hello world \r\n";
}
fwrite($fp, $con);
fclose($fp);
}else {
echo "<br>"."文件已经存在,失败";
}
<?php
//如果文件不存在,创建一个新文件,写入10句话 123 如果已经存在则写入 10句话 456!
$file_path = 'f:/hello word.txt';
if (!file_exists($file_path)){
$con = '';
for ($i = 0;$i<10;$i++){
$con .= "123 \r\n";
}
// file_put_contents
//如果文件不存在 先创建 再添加
//如果文件存在 会覆盖
file_put_contents($file_path, $con);
}else {
$con = '';
for ($i = 0;$i<10;$i++){
$con .= "456 \r\n";
}
file_put_contents($file_path, $con);
}
<?php
//如果文件不存在,创建一个新文件,写入10句话 123 如果已经存在则写入 10句话 456!
$file_path = 'f:/hello word.txt';
if (!file_exists($file_path)){
$con = '';
for ($i = 0;$i<10;$i++){
$con .= "123 \r\n";
}
// file_put_contents
//如果文件不存在 先创建 再添加
//如果文件存在 会覆盖
file_put_contents($file_path, $con);
// file_put_contents
//如果文件存在 会覆盖 file_put_contents($file_path, $con);
//如果文件存在,希望追加写 需要这样:file_put_contents($file_path, $con, FILE_APPEND);
}else {
$con = '';
for ($i = 0;$i<10;$i++){
$con .= "456 \r\n";
}
file_put_contents($file_path, $con, FILE_APPEND);
}
php操作文件 删除文件
<?php
//删除文件
$file_path = 'f:/hello word.txt';
if(file_exists($file_path)){
//如果存在则删除
if (unlink($file_path)){
echo '<br> 删除陈工';
}
else {
echo '<br> 删除失败';
}
}else {
//如果不存在,则不做操作
echo '<br> 该文件已经删除';
}
php操作文件 修改文件名字
<?php
//修改文件
$file_path = 'f:/hello word.txt';
$file_new_path = 'f:/123.txt';
//$file_new_path = 'f:/一二三.txt';
//如果是中文,用iconv进行编码
//iconv('utf-8', 'gbk', $file_new_path);
if(file_exists($file_path)){
//如果存在则删除
if (rename($file_path, $file_new_path)){
echo '<br>修改成功';
}else {
echo '<br>修改失败.';
}
}else {
//如果不存在,则不做操作
echo '<br> 该文件不存在';
}
php操作文件目录
//创建文件目录
<?php
$file_path = 'f:/123';
if (!is_dir($file_path)){
if (mkdir($file_path)){
echo '<br> 成功';
}
else {
echo '<br> 失败';
}
}
创建多级目录
<?php
$file_path = 'f:/123/aaa/bbb';
if (!is_dir($file_path)){
//创建多级目录
//0777 在 windows下被忽略 true 代表可以船舰多级目录
if (mkdir($file_path,0777,true)){
echo '<br> 成功';
}
else {
echo '<br> 失败';
}
}
删除单级目录
<?php
$file_path = 'f:/123';
if (is_dir($file_path)){
//删除单级目录
if (rmdir($file_path)){
echo '<br> 成功';
}
else {
echo '<br> 失败';
}
}
封装文件上传类
<?php
class Upload
{
//定义成员属性
private $upload_path = 'upload/'; //上传文件保存的路径
private $maxsize = 1024000;
//允许上传的文件的最大限制
private $prefix = 'tn_'; //文件名的前缀
//允许上传的文件类型
private $allow_type = array('image/jpeg','image/jpg','image/png','image/gif');
//提供修改、读取的方法:set get
public function __set($p,$v)
{
if(property_exists($this, $p)){
$this->$p = $v;
}
}
public function __get($p)
{
return $this->$p;
}
//功能,方法,具体实现文件上传的方法
public function doUpload($file)
{
// sleep(5);
//将临时文件移动到服务器的目录中
//参数1:临时的文件名
//参数2:目的地文件名
//上传成功返回true,失败返回false
$destination = $this->upload_path;
//1. 限制上传文件的大小
$maxsize = $this->maxsize; //200KB
if($file['size'] > $maxsize){
echo '图片太大了,服务器撑不下';
exit;
}
//2. 防止文件重复
//首先生成一个唯一的随机数作为文件的名字
//参数1:前缀
//参数2:布尔值,如果true化,更具有唯一性
$filename = uniqid($this->prefix,true);
//确定文件的后缀
//strrchr()用来获得一个字符串中最后一次出现的字符,返回从该字符之后的部分
//参数1:look needle from haystack,大海捞针
$ext = strrchr($file['name'], '.');
$new_filename = $filename.$ext;
//3. 分目录存储上传的文件
//按照日期创建子目录
date_default_timezone_set('PRC');
$sub_path = date('Ymd').'/';
//创建目录,先判断下 uploads/20170330是否存在,如果不存在则创建该目录
if(!is_dir($destination.$sub_path)){
mkdir($destination.$sub_path,0777,true);
}
$destination .= $sub_path.$new_filename;
//4. 上传的文件类型是否支持
$allow_type = $this->allow_type;
$true_type = $file['type'];
if(!in_array($true_type, $allow_type)){
echo '不支持该类型的文件';
exit;
}
//实例化finfo对象,用来获得一个文件的真实的类型
/*
$finfo = new finfo(FILEINFO_MIME_TYPE);
$type = $finfo -> file($file['tmp_name']);
if(!in_array($type, $allow_type)){
echo '不支持该类型的文件';
exit;
}*/
if(move_uploaded_file($file['tmp_name'], $destination)){
//上传成功之后,要把地址返回,而且将来这个地址还要保存到数据库
//通常返回从日期开始的相对的路径,便于将来进行拼接
return $sub_path.$new_filename;
}else{
return false;
}
}
}
cau'o'zuo
<?php
$_file = $_GET['file'];
if($_file == ''){
echo '<br> 找不到';
exit;
}
$full_name = 'img/'.$file;
$file_size = filesize($full_name);
iconv('utf-8', 'gbk', $full_name);
//顺序不能乱
//高速浏览器回应的文件是内容注意保存
header("Content-Type: application/otect-stream");
//按照字节返回
header("Accept-Ranges: bytes");
//显示文件大小
header("Content-length: $file_size");
//弹出对话框 ,对应的文件名!
header("Content-Disposition: attachment; filename=".$_file);
$fp = fopen($full_name, 'r');
while(!feof($fp)){
$data = fread($fp, 1024);
echo $data;
}
fclose($fp);