7. HTML中的颜色:能够是颜色单词:red/blue/green/yellow...
....
....
get方式是URL地址栏可见,长度受限制(IE2k 火狐8k),相对不安全.
post方式是URL地址不可见,长度不受限制,相对安全.
...
7. <legend> html标签--<legend> 标签为 <fieldset>、<figure> 以及 <details> 元素定义标题。
9. <datalist> html5标签--<datalist> 标签订义可选数据的列表。与 input 元素配合使用,就能够制做出输入值的下拉列表。
------------------------------------------------------------------------------------
========================
CSS层叠样式表
========================
命名规则:使用字母、数字或下划线构成,不要以数字开头
1、css的语法
-----------------------------
格式: 选择器{属性:值;属性:值;属性:值;....}
2、在HTML中如何使用css样式(html中嵌入css的方式);
----------------------------------------------------
1. 内联方式(行内样式)
就是在HTML的标签中使用style属性来设置css样式
格式: <html标签 >被修饰的内容</html标签>
<p >在HTML中如何使用css样式</p>
特色:仅做用于本标签。
2. 内部方式(内嵌样式)
就是在head标签中使用<style type="text/css">....</style>标签来设置css样式
格式:<style type="text/css">
....css样式代码
</style>
特色:做用于当前整个页面
3. 外部导入方式(外部链入)
3.1 (推荐)就是在head标签中使用<link/>标签导入一个css文件,在做用于本页面,实现css样式设置
格式:<link href="文件名.css" type="text/css" rel="stylesheet"/>
3.2 还可使用import在style标签中导入css文件。
如:<style type="text/css">
@import "style.css";
</style>
特色:做用于整个网站
他们的优先级:当样式冲突时,就是采用就近原则,是值css属性离被修饰的内容最近的为主。
若没有样式冲突则采用叠加效果。
html标签中的属性低于CSS样式。
3、css2的选择符:
---------------------------------------------------------------
1. html选择符(标签选择器)
就是把html标签做为选择符使用
如 p{....} 网页中全部p标签采用此样式
h2{....} 网页中全部h2标签采用此样式
2. class类选择符 (使用点.将自定义名(类名)来定义的选择符)
定义: .类名{样式....} 匿名类
其余选择符名.类名{样式....}
使用:<html标签 class="类名">...</html标签>
.mc{color:blue;} /* 凡是class属性值为mc的都采用此样式 */
p.ps{color:green;} /*只有p标签中class属性值为ps的才采用此样式*/
注意:类选择符能够在网页中重复使用
3. Id选择符
定义: #id名{样式.....}
使用:<html标签 id="id名">...</html标签>
注意:id选择符只在网页中使用一次.
选择符的优先级:从大到小 [ID选择符]->[class选择符]->[html选择符]->[html属性]
4. 关联选择符(包含选择符)
格式: 选择符1 选择符2 选择符3 ...{样式....}
例如: table a{....} /*table标签里的a标签才采用此样式*/
h1 p{color:red} /*只有h1标签中的p标签才采用此样式*/
5. 组合选择符(选择符组)
格式: 选择符1,选择符2,选择符3 ...{样式....}
h3,h4,h5{color:green;} /*h三、h4和h5都采用此样式*/
6. 伪类选(伪元素)择符:
格式: 标签名:伪类名{样式....}
a:link {color: #FF0000; text-decoration: none} /* 未访问的连接 */
a:visited {color: #00FF00; text-decoration: none} /* 已访问的连接 */
a:hover {color: #FF00FF; text-decoration: underline} /* 鼠标在连接上 */
a:active {color: #0000FF; text-decoration: underline} /* 激活连接 */
7. 属性选择器:
...
8. 其余伪类选择器
...
4、 CSS3中的选择器(了解)
------------------------------------------------
1. 关系选择器:
div>p 选择全部做为div元素的子元素p
div+p 选择紧贴在div元素以后p元素
div~p 选择div元素后面的全部兄弟元素p
2. 属性选择器:
[attribute]选择具备attribute属性的元素。
[attribute=value]选择具备attribute属性且属性值等于value的元素。
[attribute~=value]选择具备attribute属性且属性值为一用空格分隔的字词列表,其中一个等于value的元素。
[attribute|=value]选择具备att属性且属性值为以val开头并用链接符"-"分隔的字符串的E元素。
[attibute^=value]匹配具备attribute属性、且值以valule开头的E元素
[attribute$=value]匹配具备attribute属性、且值以value结尾的E元素
[attribute*=value]匹配具备attribute属性、且值中含有value的E元素
3. 结构性伪类选择器:
::first-letter设置对象内的第一个字符的样式。
::first-line设置对象内的第一行的样式。
:before设置在对象前(依据对象树的逻辑结构)发生的内容。
:after设置在对象后(依据对象树的逻辑结构)发生的内容。
:lang(language)匹配使用特殊语言的E元素。
:element1~element2:
:first-of-type匹配同类型中的第一个同级兄弟元素
:last-of-type匹配同类型中的最后一个同级兄弟元素
:only-of-type匹配同类型中的惟一的一个同级兄弟元素
:only-child匹配父元素仅有的一个子元素
:nth-child(n)匹配父元素的第n个子元素
:nth-last-child(n)匹配同类型中的倒数第n个同级兄弟元素
:last-child()匹配父元素的最后一个子元素
:root匹配元素在文档的根元素。在HTML中,根元素永远是HTML
:empty匹配没有任何子元素(包括text节点)的元素
4. *状态伪类选择器
:link 设置超连接a在未被访问前的样式。
:visited 设置超连接a在其连接地址已被访问过期的样式
:active 设置元素在被用户激活(在鼠标点击与释放之间发生的事件)时的样式
*:hover 设置元素在其鼠标悬停时的样式
*:focus 设置元素在其鼠标悬停时的样式
:target 匹配相关URL指向的E元素
:enabled 匹配用户界面上处于可用状态的元素
:disabled 匹配用户界面上处于禁用状态的元素
:checked 匹配用户界面上处于选中状态的元素
:not(selector)匹配不含有selector选择符的元素
::selection 设置对象被选择时的样式
5. 其余伪类选择器
E:not(s) : {attribute}
匹配全部不匹配简单选择符s的元素E
p:not(.bg) {background-color:#00FF00;}
======================================================================================
5、CSS中经常使用的属性:
---------------------------------------------------------------------------------------
1. color颜色属性:
a. HSL颜色: 经过对色调(H)、饱和度(S)、亮度(L)三个颜色通道的变化以及它们相互之间的叠加来获得各式各样的颜色.
background-color: hsl(240,100%,50%);color:white;
b. HSLA颜色: 色调(H)、饱和度(S)、亮度(L)、透明度(A);
background-color: hsla(0,100%,50%,0.2);
*c. RGB颜色: 红(R)、绿(G)、蓝(B)三个颜色通道的变化
background-color: rgba(200,100,0);
d. RGBA颜色: 红(R)、绿(G)、蓝(B)、透明度(A)
background-color: rgba(0,0,0,0.5);
*e. 图片透明度的设置 img.opacity{ opacity:0.25;}
2. 字体属性: font
font
*font-size: 字体大小:20px,60%基于父对象的百分比取值
*font-family: 字体:宋体,Arial
font-style: normal正常;italic斜体; oblique倾斜的字体
*font-weight: 字体加粗 :bold
font-variant: small-caps 小型的大写字母字体
font-stretch: [了解]文字的拉伸是相对于浏览器显示的字体的正常宽度(大部分浏览器不支持)。
3. 文本属性:
text-indent: 首行缩进:text-indent:30px;
text-overflow: 文本的溢出是否使用省略标记(...)。clip|ellipsis(显示省略标记)
*text-align: 文本的位置:left center right
text-transform:对象中的文本的大小写:capitalize(首字母)|uppercase大写|lowercase小写
*text-decoration: 字体画线:none无、underline下画线,line-through贯穿线
text-decoration-line:[了解]文本装饰线条的位置(浏览器不兼容)
text-shadow: 文本的文字是否有阴影及模糊效果
vertical-align: 文本的垂直对齐方式
direction:文字流方向。ltr | rtl
*letter-spacing: 文字或字母的间距
word-spacing:单词间距
*line-height:行高
*color: 字体颜色
*4. 边框:
border:
border-color;
border-style;
border-width:
border-left-color;
border-left-style;
border-left-width:
...
border-radius:圆角处理
box-shadow: 设置或检索对象阴影
5. 背景属性:background
*background-color: 背景颜色
*background-image: 背景图片
*background-repeat:是否重复,如何重复?(平铺)
*background-position:定位
background-attachment: 是否固定背景,
scroll:默认值。背景图像是随对象内容滚动
fixed:背景图像固定
*background-size: 背景大小,如 background-size:100px 140px;
多层背景:
background:url(test1.jpg) no-repeat scroll 10px 20px,url(test2.jpg) no-repeat scroll 50px 60px,url(test3.jpg) no-repeat scroll 90px 100px;
background-origin:content-box,content-box,content-box;
background-clip:padding-box,padding-box,padding-box;
background-size:50px 60px,50px 60px,50px 60px;
6. *内补白(内补丁)
padding: 检索或设置对象四边的内部边距,如padding:10px; padding:5px 10px;
padding-top: 检索或设置对象顶边的内部边距
padding-right: 检索或设置对象右边的内部边距
padding-bottom:检索或设置对象下边的内部边距
padding-left: 检索或设置对象左边的内部边距
7. *外补白(外补丁)
margin: 检索或设置对象四边的外延边距,如 margin:10px; margin:5px auto;
margin-top: 检索或设置对象顶边的外延边距
margin-right: 检索或设置对象右边的外延边距
margin-bottom: 检索或设置对象下边的外延边距
margin-left: 检索或设置对象左边的外延边距
8. Position定位
*position: 定位方式:absolute(绝对定位)、fixed(固定)(relative定位参考,可对内部相对absolute定位)
*z-index: 层叠顺序,值越大越在上方。
*top: 检索或设置对象与其最近一个定位的父对象顶部相关的位置
right: 检索或设置对象与其最近一个定位的父对象右边相关的位置
bottom: 检索或设置对象与其最近一个定位的父对象下边相关的位置
*left: 检索或设置对象与其最近一个定位的父对象左边相关的位置
9. Layout布局
*display: 是否及如何显示:none隐藏,block块状显示...
*float: 指出了对象是否及如何浮动:值none | left | right
*clear: 清除浮动:none | left | right | both两侧
visibility:设置或检索是否显示对象。visible|hidden|collapse。
与display属性不一样,此属性为隐藏的对象保留其占据的物理空间
clip: 检索或设置对象的可视区域。区域外的部分是透明的。 rect(上-右-下-左)
如:clip:rect(auto 50px 20px auto);上和左不裁剪,右50,下20.
*overflow: 超出隐藏:hidden,visible:不剪切内容
overflow-x:内容超过其指定宽度时如何管理内容: visible | hidden | scroll | auto
overflow-y:内容超过其指定高度时如何管理内容
10.Flexible Box 弹性盒子(了解见手册)
box-orient: 设置或检索弹性盒模型对象的子元素的排列方式。horizontal(水平)|vertical(纵向)
box-pack 设置或检索弹性盒模型对象的子元素的对齐方式。
box-align 设置或检索弹性盒模型对象的子元素的对齐方式。
box-flex 设置或检索弹性盒模型对象的子元素如何分配其剩余空间。
box-flex-group 设置或检索弹性盒模型对象的子元素的所属组。
box-ordinal-group 设置或检索弹性盒模型对象的子元素的显示顺序。
box-direction 设置或检索弹性盒模型对象的子元素的排列顺序是否反转。
box-lines 设置或检索弹性盒模型对象的子元素是否能够换行显示。
11. 用户界面 User Interface
*cursor 鼠标指针采用何种系统预约义的光标形状。pointer小手,url自定义
zoom 设置或检索对象的缩放比例: normal|5倍|200%百分比
box-sizing 设置或检索对象的盒模型组成模式。content-box | border-box
content-box: padding和border不被包含在定义的width和height以内。
border-box: padding和border被包含在定义的width和height以内。
resize 设置或检索对象的区域是否容许用户缩放,调节元素尺寸大小。
none: 不容许用户调整元素大小。
both: 用户能够调节元素的宽度和高度。
horizontal: 用户能够调节元素的宽度
vertical: 用户能够调节元素的高度。
outline 复合属性:设置或检索对象外的线条轮廓
outline-width 设置或检索对象外的线条轮廓的宽度
outline-style 设置或检索对象外的线条轮廓的样式
outline-color 设置或检索对象外的线条轮廓的颜色
outline-offset 设置或检索对象外的线条轮廓偏移位置的数值
nav-index 设置或检索对象的导航顺序。
nav-up 设置或检索对象的导航方向。
nav-right 设置或检索对象的导航方向。
12. 多栏 Multi-column
columns 设置或检索对象的列数和每列的宽度
column-width 设置或检索对象每列的宽度
column-count 设置或检索对象的列数
column-gap 设置或检索对象的列与列之间的间隙
column-rule 设置或检索对象的列与列之间的边框
column-rule-width 设置或检索对象的列与列之间的边框厚度
column-rule-style 设置或检索对象的列与列之间的边框样式
column-rule-color 对象的列与列之间的边框颜色
column-span 象元素是否横跨全部列
column-fill 对象全部列的高度是否统一
column-break-before 对象以前是否断行
column-break-after 对象以后是否断行
column-break-inside 对象内部是否断行
13. 表格相关属性:
table-layout 设置或检索表格的布局算法
border-collapse 设置或检索表格的行和单元格的边是合并在一块儿仍是按照标准的HTML样式分开 separate | collapse
border-spacing 设置或检索当表格边框独立时,行和单元格的边框在横向和纵向上的间距
caption-side 设置或检索表格的caption对象是在表格的那一边 top | right | bottom | left
empty-cell 设置或检索当表格的单元格无内容时,是否显示该单元格的边框 hide | show
14. 过渡 Transition:
transition 检索或设置对象变换时的过渡效果
transition-property 检索或设置对象中的参与过渡的属性
transition-duration 检索或设置对象过渡的持续时间
transition-timing-function 检索或设置对象中过渡的类型
transition-delay 检索或设置对象延迟过渡的时间
15. 动画 Animation
animation 检索或设置对象所应用的动画特效
animation-name 检索或设置对象所应用的动画名称
animation-duration 检索或设置对象动画的持续时间
animation-timing-function 检索或设置对象动画的过渡类型
animation-delay 检索或设置对象动画延迟的时间
animation-iteration-count 检索或设置对象动画的循环次数
animation-direction 检索或设置对象动画在循环中是否反向运动
animation-play-state 检索或设置对象动画的状态
animation-fill-mode 检索或设置对象动画时间以外的状态
16. 2D变换 2D Transform:
transform 检索或设置对象的变换
transform-origin 检索或设置对象中的变换所参照的原点
17. Media Queries Properties媒体查询
width 定义输出设备中的页面可见区域宽度
height 定义输出设备中的页面可见区域高度
device-width 定义输出设备的屏幕可见宽度
device-height 定义输出设备的屏幕可见高度
orientation 定义'height'是否大于或等于'width'。值portrait表明是,landscape表明否
aspect-ratio 定义'width'与'height'的比率
device-aspect-ratio 定义'device-width'与'device-height'的比率。如常见的显示器比率:4/3, 16/9, 16/10
device-aspect-ratio 定义'device-width'与'device-height'的比率。如常见的显示器比率:4/3, 16/9, 16/10
color 定义每一组输出设备的彩色原件个数。若是不是彩色设备,则值等于0
color-index 定义在输出设备的彩色查询表中的条目数。若是没有使用彩色查询表,则值等于0
monochrome 定义在一个单色框架缓冲区中每像素包含的单色原件个数。若是不是单色设备,则值等于0
resolution 定义设备的分辨率。如:96dpi, 300dpi, 118dpcm
scan 定义电视类设备的扫描工序
grid 用来查询输出设备是否使用栅格或点阵。只有1和0才是有效值,1表明是,0表明否
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型
就是设定某种扩展名的文件
用一种应用程序来打开的方式类型,
当该扩展名文件被访问的时候,
浏览器会自动使用指定应用程序来打开。
D:\wamp\bin\apache\Apache2.4.4\conf\mime.types
扩展名 type类型
.ogg video/ogg
.css text/css
.html text/html
PHP函数: =========================================================================== 1、**语法:定义 //函数:完成指定任务的功能代码块,是一个已经命名的。 function 函数名( [参数1,参数2...] ){ 函数体(语句) echo ''; [return 返回值;] //echo 'aaaaaa'; } 使用: 函数名([参数。]); 注意:变量要先定义赋值,才能够输出,但函数的定义和使用不部分前后顺序的。 示例: //定义一个求累加的函数,要求参数一个:表示要累加的值,返回求和后的结果 function doSum($m){ $sum=0; for($i=0;$i<=$m;$i++){ $sum+=$i; } return $sum; //echo $sum } // echo doSum(10)+doSum(20); 2. 判断函数是否存在: funciton_exists("函数名"); 返回真true或假false 认识一个函数从3个方面: 1. 函数的功能 2. 参数的类型,是否可选 3. 返回值 2、变量的做用域(范围) (1)因为函数的出现,致使变量的能见度(生命周期)不一样。 共划分为:全局变量、局部变量、 静态变量: 1. *全局变量:就是在函数外定义变量 做用域:在函数外和函数内均可以看到的,并可使用的变量 注意:在函数内使用函数外的全局变量要使用global关键字先声明一下。 <?php //变量的做用域:全局变量 $a=10;//定义一个变量a值为10 $b=20; //定义一个函数 function fun(){ global $a; //尝试使用外部的全局变量a echo $a; //输出变量a的值10 echo $b; //输出变量b的值,结果没有(由于没有使用global) $a=100; } fun(); //调用函数fun echo $a; //100 ?> 2.* 局部变量:在函数内定义的变量,特色只在函数内有效,咱们可使用return将值返回。 <?php //变量的做用域:局部变量 //定义一个函数 function fun(){ $a=100; //函数内定义变量 echo $a; //输出变量a的值100 } fun(); //调用函数fun echo $a; //没有输出,在函数内定义的变量,在函数外是没法使用的 ?> 3. 静态变量:在函数内使用static关键字定义的变量 //变量做用域:静态变量的使用 function fun(){ static $i=1; //在当前脚本中连续屡次调用本函数,i依然有效,里面的静态声明(初始化)只会调用一次。 $i++; echo $i."<br/>"; } fun(); //1 fun(); //2 fun(); //3 fun(); //4 3、**声明及应用各类形式的PHP函数(函数中参数的种类) ================================================================ 1. 普通参数的函数: 常规参数的函数格式说明: string example(string name,int age,double height) 所谓的常规参数的函数,就是函数中参数的类型为php的普通数据类型。 如:求字串长度函数:int strlen(string $string ) 数据此函数调用时传入的是String字串类型,返回int类型 2. 伪类型参数的函数格式说明: mixed funName(mixed $a, number $b, callback $c) 伪类型参数的函数就是参数中的类型是如下三种伪类型的。 三种伪类型: mixed、number 和 callback。 3. 引用参数的函数格式说明: void funName(array &args) 使用&符来实现引用传递,就是将参数直接给给函数使用。(起别名) 假如函数内容发生改变,会使当前参数也发生改变。 注意:调用引用参数时,必须使用变量,不能够直接用值。 如:fun($x); 不可使用fun(10); 在定义函数时的参数是使用&标识的参数; function myadd($x,$y=0,&$z){ $sum=$x+$y; return $sum; } $a=10; $b=20; $sum=0; myadd($a,$b,$sum);//调用函数myadd,将前两个参数的和赋给第三个参数 echo $sum; //30 4.默认值参数函数: 咱们能够在定义函数时,将部分参数提早附上初始值, 当被调用时没有给这参数传值,就会采用默认值,以保障函数正常使用。 要求默认值从参数的右边开始。 5.可变长度参数列表的函数。 此函数的参数个数任意个。 func_get_args();//以数组的方式返回全部的参数信息 func_get_arg($index) //获取指定参数位置(index:从0开始的整数)的信息 func_num_args()//获取参数的个数。 //可变长度参数列表 function dosum(){ //echo "参数的个数:".func_num_args()."<br/>"; //echo "某个参数的值:".func_get_arg(4)."<br/>"; $sum=0; for($i=0;$i<func_num_args();$i++){ echo func_get_arg($i)." "; $sum+=func_get_arg($i); } echo "<br/>"; echo "共计:".$sum; } dosum(10,20,50,60,300,100,20); -------------------------------------------------------------------------------- =========================================================================== 四. *变量函数:就是调用函数使用的不是直接的函数名,而是一个变量。 如: 要调用add函数。应该是:add(10,20); 可是: $name="add"; $name(10,20); 等价于add(10,20); 就是函数的名字也是个变量时,就是变量函数。 $name="sum"; $name(); //等价于 sum( ); 五. 递归函数: 递归函数--就是在函数体的代码中出现了调用本身自己函数的语句。注意递归的结束。 六. *自定义函数库: 1. 定义一些经常使用函数存放在一个php文件中,如:functions.php 2. 在咱们要使用函数的php文件中使用: include 或require导入函数库文件后便可使用。 如:include("functions.php"); 或require("functions.php"); require() 和 include() 几乎彻底同样,除了处理失败的方式不一样以外。 include() 产生一个Warning(适合导入不重要的文件) require() 则致使一个 Fatal Error。(导入重要文件) 七. 使用系统函数: 如何了解一个系统函数并学会使用他 1.功能:要了解本函数的实现功能(干什么?) 2.参数:调用这些函数都须要哪些参数(可选和必选)以及类型。 3.返回值:本函数都有什么返回结果。
PHP--GD库
====================
1、支持:须要php支持gd库
2、绘画步骤:
1. 建立一个画布(画板)、画笔、色彩。
2. *开始绘画
3. 输出图像
4. 销毁图像资源(释放内存)
示例:
<?php
//1.建立一个画布,颜色
$im = imagecreate(200,200);
$red = imagecolorallocate($im,255,0,0); //建立一个颜色:红色
$blue = imagecolorallocate($im,0,0,255); //建立一个颜色:蓝色
$c1 = imagecolorallocate($im,200,200,200);
//2.开始绘画
imagefill($im,0,0,$c1); //填充背景
//....
//3.输出图像
header("Content-Type: image/jpeg");//设置响应头信息为一个jpeg的图片
imagejpeg($im);//输出一个jpeg图片
//4.销毁
imagedestroy($im); //
3、图片的具体绘制:
3.1 建立一个画布:
imagecreate(宽,高)--建立一个基于256色的画布
imagecreatetruecolor( int x_size, int y_size ) -- 新建一个真彩色图像
//还有基于某个图片的画布
imagecreatefromgif( string filename )
imagecreatefrompng( string filename )
imagecreatefromjpeg( string filename )
3.2 绘画:
//分配定义颜色
$red = imagecolorallocate($im,255,0,0); //分配一个颜色
//填充背景
bool imagefill(resource image,int x,int y, int color ); //填充背景
//画点
bool imagesetpixel(resource image,int x,int y,int color );//画一个像素点
//画一个线段的函数
bool imageline ( resource image, int x1, int y1, int x2, int y2, int color )
//画矩形框(不填充)
bool imagerectangle ( resource image, int x1, int y1, int x2, int y2, int color )
//画矩形框(填充)
bool imagefilledrectangle ( resource image, int x1, int y1, int x2, int y2, int color )
//绘制多边形
bool imagepolygon ( resource image, array points, int num_points, int color )
bool imagefilledpolygon ( resource image, array points, int num_points, int color )
//绘制椭圆(正圆)
imageellipse ( resource image, int cx, int cy, int w, int h, int color )
imagefilledellipse ( resource image, int cx, int cy, int w, int h, int color )
//绘制圆弧(可填充)
imagearc ( resource image, int cx, int cy, int w, int h, int s, int e, int color, int style )
imagefilledarc ( resource image, int cx, int cy, int w, int h, int s, int e, int color, int style )
//绘制字串
bool imagestring ( resource image, int font, int x, int y, string s, int col )
bool imagestringup ( resource image, int font, int x, int y, string s, int col )
//绘制字符
imagechar
//绘制文本:
*array imagettftext ( resource image, float size, float angle, int x, int y, int color, string fontfile, string text )
当上面的字体出现乱码时,使用下面的函数转换编码
string iconv ( string in_charset, string out_charset, string str )
$name="张三";
$str = iconv("ISO8859-1","UTF-8",$name);
$str = iconv("GBK","UTF-8",$name);
$str = iconv("GB2312","UTF-8",$name);
//图片的裁剪、合成、缩放
**bool imagecopyresampled ( resource dst_image, resource src_image, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h )
* imagesx — 取得图像宽度
* imagesy — 取得图像高度
* array getimagesize ( string $filename [, array &$imageinfo ] ) 取得图像大小
3.3.输出图
header("Content-Type: image/jpeg");//设置响应头信息为一个jpeg的图片
imagejpeg($im);//输出一个jpeg图片
header("Content-Type: image/png");//设置响应头信息为一个png的图片
imagepng($im);//输出一个png图片
//输出到指定文件中(另存为)
imagepng($im,"**.png");
3.4.销毁
imagedestroy($im); //
=========================
PHP --字串的处理
========================
1、字串的定义
-----------------------------
1. 单引号: '' 不支持变量的解析,转义符: \\ \'
2. 双引号: "" 支持变量的解析,转义符: \n \r \t \" \$ \\ ...
3. 定界符: <<< 注意结束符的使用。
$str = <<<ABC
......
ABC;
2、 经常使用字串的输出函数
-------------------------------------
1. echo() 支持多个变量同时输出 如: echo $s1,$s2;
2. print() 不支持多个变量。
3. die() 别名exit() 终止当期脚本执行,能够顺便输出内容
4. print_r() 与var_dump()函数相似,都是格式化变量并直接输出,能够解析数组,对象等类型
经常使用于开发时的临时输出使用(测试)
5. printf() 格式化字串并输出
6. sprintf() 格式化字串并返回
chr()和ord()是实现ASCII码值和字符之间的转换
命名:驼峰命名法
函数名: strDel()
userNameAdd()
类名: UserAction()
3、经常使用字串中的处理函数(格式化)
------------------------------------
ltrim() 去除左侧多余字符(默认删空格)
rtrim() 去除右侧多余字符(默认删空格)
* trim() 去除两侧多余字符(默认删空格)
str_pad() 使用另外一个字符串填充字符串为指定长度
* 函数: strtolower( )
语法: string strtolower(string str);
本函数将字符串 str 所有变小写字符串。
* 函数: strtoupper( )
语法: string strtoupper(string str);
本函数将字符串 str 所有变大写字符串。
函数:ucfirst( )
将字符串第一个字符改大写。
语法: string ucfirst(string str);
本函数返回字符串 str 第一个字的字首字母改为大写。
函数:ucwords( )
将字符串每一个字第一个字母改大写。
语法: string ucwords(string str);
本函数返回字符串 str 每一个字的字首字母全都改为大写。
int ord(string $string ) — 返回字符的 ASCII 码值
string chr(int $ascii ) — 返回指定的字符
网页输出格式化函数
nl2br--将字串中\n换成<br/>标签,实现换行输出。
* htmlspecialchars--格式化字串中的html标签
htmlentities--
* strip_tags -- 删除html标签函数
strrev -- 将字串颠倒返回
* strlen -- 求字串长度: 字母:一个算一个长度,汉字:utf-8编码是每一个汉字3个长度,其余是2长度
* mb_strlen(str,"utf-8");获取中文字的长度
number_format -- 格式化数字的
* md5 -- 单向加密的(不可逆的(不能解密的))。
strcmp -- 整个比较是否相同
strncmp --指定长度的比较
strcasecmp-- 不区分大小写比较
strnatcmp -- 按天然顺序比较
similar_text -- 模糊比较
** explode -- 字符串拆分函数
** implode -- 字符串组合函数
* substr -- 截取字串 a.txt a.rm a.rmvb a.b.txt
string返回值 substr(
string string被截字串,
int start起始位置
[, int length长度] )
* mb_substr() --截取指定编码的字串
* strstr -- 字串查找并截取
strchr -- 是上面的strstr的别名找并截取
strrchr -- 从后面作字串查找。找并截取
* strpos --寻早一个字符出现位置(从前开始。第三个参数为查找起始位置)
strrpos --寻早一个字符出现位置(从后面开始找。)
* 换成字串 str_replace(被换字串,换成的字串,原字串,[数量]);字符串替换
file_get_contents("文件名") // 获取指定文件的内容
file_put_contents("文件名","内容")//将内容写入(覆盖写)到指定文件中
file_put_contents("文件名","内容",FILE_APPEND)
//将内容写入(追加写)到指定文件中
=====================================
php--正则表达式
=====================================
1、正则表达式的介绍:
----------------------------------------------------
正则表达式是用于描述字符排列和匹配模式的一种语法规则。
它主要用于字符串的模式分割、匹配、查找及替换操做。
1. 用途:匹配、查找、替换、分割
2. php提供了两套正则表达式函数库
*1. Perl 兼容正则表达式函数(推荐使用)
2. POSIX 扩展正则表达式函数
2、 语法:
----------------------------------------------------
1. 表达式的格式: "/表达式/[修正符]"
解释:其中"/"表示正则表达式的定界符,可是也能够是其余符号:如”#“,”!“
注意:定界符不能够是字母、数字和斜线\。
像“#”、“|”、“!”等均可以的
如:/.../ #...# |....|
其中修正符是可选的,表示对表达式作额外的修饰。
3、 正则表达式的组成部分:
----------------------------------------------------
1. 原子是组成正则表达式的基本单位,在分析正则表达式时,应做为一个总体。
原子包括如下内容:
> 单个字符、数字,如a-z,A-Z,0-9。
> 模式单元,如(ABC)能够理解为由多个原子组成的大的原子。
> 原子表,如 [ABC]。
> 从新使用的模式单元,如:\\1
> 普通转义字符,如:\d, \D, \w
> 转义元字符,如:\*,\.
*> 元字符
*2. 元字符(具备特殊意义字符):
[] 表示单个字符的原子表
例如:[aoeiu] 表示任意一个元音字母
[0-9] 表示任意一位数字
[a-z][0-9]表示小写字和一位数字构成的两位字符
[a-zA-Z0-9] 表示任意一位大小字母或数字
[^] 表示除中括号内原子以外的任何字符 是[]的取反
例如:[^0-9] 表示任意一位非数字字符
[^a-z] 表示任意一位非小写字母
{m} 表示对前面原子的数量控制,表示是m次
例如:[0-9]{4} 表示4位数字
[1][3-8][0-9]{9} 手机号码
{m,} 表示对前面原子的数量控制,表示是至少m次
例如: [0-9]{2,} 表示两位及以上的数字
{m,n}表示对前面原子的数量控制,表示是m到n次
例如: [a-z]{6,8} 表示6到8位的小写字母
* 表示对前面原子的数量控制,表示是任意次,等价于{0,}
+ 表示对前面原子的数量控制,表示至少1次,等价于{1,}
? 表示对前面原子的数量控制,表示0次或1次(无关紧要) 等价于{0,1}
例如:正整数:[1-9][0-9]*
整数:[\-]?[0-9]+
email:
() 表示一个总体原子,【还有一个子存储单元的做用】。
也可使用?:来拒绝子存储。 (?:.*?)
例如:(red) 字串red
(red|blue) 字串red或blue
(abc){2} 表示两个abc
| 表示或的意思
(rea|blue) 字串red或blue
^ 用在正则单元块的开头处,表示必须以指定的开头
$ 用在正则单元块的结尾处,表示必须以指定的结尾
. 表示任意一个除换行符以外的字符
经常使用组合: .*? 或 .+? 表示最小匹配全部字符(拒绝贪婪匹配)
3. 普通转义字符:
*\d 匹配一个数字;等价于[0-9]
*\D 匹配除数字之外任何一个字符;等价于[^0-9]
*\w 匹配一个英文字母、数字或下划线;等价于[0-9a-zA-Z_]
*\W 匹配除英文字母、数字和下划线之外任何一个字符;等价于[^0-9a-zA-Z_]
*\s 匹配一个空白字符;等价于[\f\n\r\t\v]
*\S 匹配除空白字符之外任何一个字符;等价于[^\f\n\r\t\v]
\f 匹配一个换页符等价于 \x0c 或 \cL
*\n 匹配一个换行符;等价于 \x0a 或 \cJ
*\r 匹配一个回车符等价于\x0d 或 \cM
*\t 匹配一个制表符;等价于 \x09\或\cl
\v 匹配一个垂直制表符;等价于\x0b或\ck
\oNN 匹配一个八进制数字
\xNN 匹配一个十六进制数字
\cC 匹配一个控制字符
/^-?\d+$|^-?0[xX][\da-fA-F]+$/ 表示十进制和十六进制的一个数字
^-?\d+$ ^-?0[xX][\da-fA-F]+$
//表示一个邮箱地址
/^[0-9a-zA-Z_-]+@[0-9a-zA-Z_-]+(\.[0-9a-zA-Z_-]+){1,3}$/
4. 模式修正符
i 表示不区分大小写;
"/[a-zA-Z]/" <==>"/[a-z]/i"
s 表示匹配视为单行(就是可让点.支持换行)
U 表示拒绝贪婪匹配
注意.*?和大U不能一块儿使用
x忽略 能够忽略正则当中的空白
4、 正则表达式的函数:
--------------------------------------------------
preg_grep -- 返回与模式匹配的数组单元
array preg_grep ( string $pattern , array $input [, int $flags = 0 ] )
面试题:
$day=array('2014-09-26','2014-09/26','2014/12/30','2014/10-29');
* preg_match_all -- 进行全局正则表达式匹配 , 返回共计匹配的个数。
和下面的同样,不一样的是匹配到最后(全局匹配)匹配全部a标签
* preg_match -- 进行正则表达式匹配,只匹配一次,返回1,不然0,
格式:preg_match("正则表达式","被匹配的字串",存放结果的变量名,PREG_OFFSET_CAPTURE,起始偏移量)
其中:PREG_OFFSET_CAPTURE表示获取匹配索引位置
起始偏移量:从指定位置开始匹配
*preg_replace -- 执行正则表达式的搜索和替换
面试题: $str='09/26/2014';将字串换成 2014-09-26
<b>aaaaaaaaa</b><b>bbbbbbbbb</b><b>cccccccccc</b>将b标签换成i标签
*preg_split -- 用正则表达式分割字符串
<dd>
</dd>
==========================
php--文件处理系统
==========================
1、概述:
-------------------------
1.1 文件类型:
文件在windows系统下分为3种不一样:文件、目录、未知
在linux/unix系统下分为7种不一样:block、char、dir、fifo、file、link和unknown七种类型
1.2 文件的经常使用函数:
* filetype() --获取文件类型的函数:
* is_dir( ) -- 判断给定文件名是不是一个目录
语法结构:bool is_dir(名称)
返回类型:若是文件名存在而且是一个目录则返回 true,不然返回 false。
is_executable( ) -- 判断给定文件名是否可执行
语法结构:bool is_executable(名称)
返回类型:若是文件存在且可执行则返回 true ,不然返回 false 。
* is_file( ) -- 判断给定文件名是否为一个正常的文件
语法结构:bool is_file(名称)
返回类型:若是文件存在且为正常的文件则返回 true 。
is_link( ) -- 判断给定文件名是否为一个符号链接
语法结构:bool is_link(名称)
返回类型:若是文件存在而且是一个符号链接则返回 true。
is_readable( ) -- 判断给定文件名是否可读
语法结构:bool is_readable(文件名称)
返回类型:若是文件存在而且可读则返回 true 。
* is_writable( ) -- 判断给定的文件名是否可写
语法结构:bool is_writable(文件名称)
返回类型:若是文件存在而且可写则返回 true 。
*file_exists( ) 检查文件或目录是否存在
*filesize() 取得文件大小(不能获取目录大小)
is_readable() 判断文件是否可读
is_writable() 判断文件是否可写
*filectime() 获取文件的建立时间
filemtime() 获取文件的修改时间
fileatime() 获取文件的访问时间
stat() 获取文件大部分属性
2、目录的相关操做
----------------------------------------------
2.1 路经的方式:
windows系统:D:/a/b/c.php 或 D:\a\b\c.php
linux/unix系统: /a/b/c.php
为统一建议使用"/"做为目录之间的分割符
2.2 路径的相关函数(4个):
1. basename("url地址"[,去除部分]) -- 获取指定url的文件名
2. dirname("url地址") -- 获取地址的路径值
示例:
echo basename($url)."<br/>"; //c.php
echo basename($url,".php")."<br/>"; //c (去掉".php")
*3. pathinfo(文件路径[,须要的下标])--获取文件路径的详细信息,返回一个关联数组
结果:下标:dirname 路径名
basename 文件名
extension 后缀名
filename 文件名(去掉后缀的)
示例:
*echo pathinfo($url,PATHINFO_EXTENSION); //php 后缀名
*echo pathinfo($url,PATHINFO_BASENAME); //c.php 文件名
$a = pathinfo($url);
$a结果:
array(4) {
["dirname"]=>
["basename"]=>
string(5) "c.php"
["extension"]=>
string(3) "php"
["filename"]=>
string(1) "c"
}
4. realpath()--获取指定文件的绝对路径
示例: echo realpath("1.php"); //D:\AppServ\www\lamp45\09_file_dir\1.php
2.3 目录的遍历函数:
*opendir("") -- 打开一个目录,返回此目录的资源句柄
*readdir(资源句柄) -- 从目中读取一个目录或文件,并指针向下移动一位。
*closedir(资源句柄)-- 关闭打开的目录
rewinddir(资源句柄) -- 倒回目录指针(移至首位)
2.4 统计空间的大小
echo "当前磁盘可用大小:".(disk_free_space("./")/1024/1024/1024)."G<br/>";
echo "当前磁盘共计大小:".(disk_total_space("./")/1024/1024/1024)."G<br/>";
2.5 目录的操做
*mkdir() -- 建立一个目录
*rmdir() -- 删除一个目录(只支持删除空目录)
*unlink() -- 删除一个文件
2.6 复制文件:
copy() --- 复制文件。不支持目录复制
3、文件基本操做
----------------------------------------------------
*1. fopen(文件名,打开模式) ---打开一个文件
模式:读(r、r+)、 清空写(w/w+), 追加写(a/a+)、 建立模式(x,x+)
*打开模式: *r: 只读模式打开文件,文件指针执行首位。
r+: 可读可写模式打开文件,文件指针执行首位,若文件指针不是在最后,则是覆盖写。
*w: 以写方式打开文件,文件内容清空,若文件不存在,则尝试建立。
w+: 以写和读方式打开文件,文件内容清空,若文件不存在,则尝试建立。(也会覆盖写)
*a: 以追加内容方式打开文件,指针移至最后,若文件不存在,则尝试建立。
a+: 以追加内容和可读方式打开文件,指针移至最后,若文件不存在,则尝试建立。
x: 以建立方式打开文件,可写。若文件已存在,则报错。
x+: 以建立方式打开文件,可写可读。若文件已存在,则报错。
附加模式:
t: txt文本模式(字符流)
b: byte字节模式(二进制)默认 (字节流)
如:fopen("a.txt","rb");
文件的读写操做也叫流操做,其中流分为字符流(t)和字节流(b 二进制)
*2. fread(打开的文件资源,读取的长度) -- 读取文件内容。
*3. fwrite(打开的文件资源,被写入的字串[,长度]) -- 向文件写入内容。
*4. fclose(打开的文件资源) -- 关闭文件
5. fgets() -- 从文件资源中读取一行
6. fgetc() -- 读取一个字符
------------不用打开文件可直接操做文件的函数-----------------------
*7. file() 将文件读出(内容是数组格式),并返回
*8. readfile() 将文件内容读出,并输出
9. file_get_contents() 读取文件内容
10.file_put_contents() 将指定内容写入文件
---------------------文件指针的操做--------------------------------
11. ftell() --返回文件指针的位置
12. fseek() --设置文件指针的位置
示例:
fseek($f,-2,SEEK_CUR); //从当前指针位置开始,向前移动2位
fseek($f,2,SEEK_SET); //从文件指针开始位置,向后移动2位
fseek($f,-5,SEEK_END); //从文件指针的最后位置开始,向前移动5位
13. rewind() --将文件指针移至首位
------------文件锁(了解)---------------------------
14. bool flock ( int $handle , int $operation [, int &$wouldblock ] )
轻便的咨询文件锁定
operation参数:
要取得共享锁定(读取的程序),将 operation 设为 LOCK_SH(PHP 4.0.1 之前的版本设置为 1)。
要取得独占锁定(写入的程序),将 operation 设为 LOCK_EX(PHP 4.0.1 之前的版本中设置为 2)。
要释放锁定(不管共享或独占),将 operation 设为 LOCK_UN(PHP 4.0.1 之前的版本中设置为 3)。
若是不但愿 flock() 在锁定时堵塞,则给 operation 加上 LOCK_NB(PHP 4.0.1 之前的版本中设置为 4)。
示例:
<?php
$fp = fopen("/tmp/lock.txt", "w+");
if(flock($fp, LOCK_EX)) { // 进行排它型锁定
fwrite($fp, "Write something here\n");
flock($fp, LOCK_UN); // 释放锁定
} else {
echo "Couldn't lock the file !";
}
fclose($fp);
?>
----------------------------------------------
*15. rename() --修改文件名
16. ftruncate() — 将文件截断到给定的长度
200:请求成功。
301:被请求的资源已永久移动到新位置。
302:请求的资源如今临时从不一样的 URI 响应请求。
401:当前请求须要用户验证。
403:服务器已经理解请求,可是拒绝执行它。
404:请求所但愿获得的资源未被在服务器上发现。
500:服务器遇到了一个不曾预料的情况,致使了它没法完成对请求的处理。通常来讲,这个问题都会在服务器的程序码出错时出现。
502 做为网关或者代理工做的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503:因为临时的服务器维护或者过载,服务器当前没法处理请求。
505:服务器不支持,或者拒绝支持在请求中使用的 HTTP 版本。
2xx:请求成功
3xx:重定向
4xx:请求错误
5xx:服务器错误
===================================================
对象是客观存在的一个实体。
类是对对象抽象的一个描述。
概念:对象(实体)、类、 类与对象的关系。
oop面向对象编程的特色:封装、继承、多态
类和对象的关系:
类的实例化结果就是一个对象(使用new关键字)
对对象的抽象描述就是一个类
1、如何定义一个类,和使用
-------------------------------------
1.1 语法格式:
[修饰符] class 类名{
【成员属性】定义变量
【成员方法】定义函数
}
[修饰符] class 类名 [extends 父类] [implements 接口1[,接口2...]]{
【成员属性】定义变量
【成员方法】定义函数
}
1.2 其中成员属性格式:
修饰符 $变量名[=默认值]; 如:public $name="zhangsan";
注意:成员属性不能够是带运算符的表达式、变量、方法或函数的调用。 如:
public $var3 = 1+2;
public $var4 = self::myStaticMethod();
public $var5 = $myVar;
正肯定义方式:
public $var6 = 100; //普通数值(4个标量:整数、浮点数、布尔、字串)
public $var6 = myConstant; //常量
public $var7 = self::classConstant; //静态属性
public $var8 = array(true, false); //数组
经常使用属性的修饰符:public、protected、private、static、var
1.3 其中成员方法格式:
[修饰符] function 方法名(参数..){
[方法体]
[return 返回值]
}
经常使用的修饰符:public、protected、private、static、abstract、final
1.4 对象: 他是经过new 类()来产生的对象。其中new称为实例化
也就是:类的实例化就会产生一个对象。
如: $p = new Person();
1.5 $this 关键字: 表示本身,表示当前使用对象。
咱们在类中调用本身的成员属性或函数都是使用 $this->调用。
注意:非静态方法中可使用this关键字
2、构造函数和析构函数
------------------------------------------
2.1. 构造方法(构造函数):
当咱们经过new关键字来建立一个对象时,第一个自动执行的方法称为构造方法。
方法名__construct(); 主要用于初始化对象。
(在php4.0时可以使用与类名重名的方法做为构造方法)
2.2. 析构方法:当这个对象被销毁时最后自动调用的方法,称为析构方法。
__destruct(); 目的是释放资源(如关闭链接、文件,释放资源)
3、封装(访问控制)
--------------------------------------------------------------------
3.1 封装:就是将属性私有,并提供公有的setter放置与getter取值方法
public(公有) protected(受保护) private(私有)
===========================================================
在本类中 Y Y Y
在子类中 Y Y N
在类外边 Y N N
4、 重载
----------------------------------------------------------------
4.1 属性重载中的四个魔术方法:__set() __get() __isset() __unset()
* __get():当咱们直接输出一个对象中的非公有属性时会自动调用的方法,
并将属性名以第一个参数传进去。
__get($name){...}
* __set(); 当咱们直接设置一个对象中的非公有属性时会自动调用的方法,
并将属性名以第一个参数,值做为第二参数传进去。
__set($name,$value){...}
__isset()当对未定义的变量调用isset() 或 empty()时,__isset() 会被调用。
//当isset判断一个对象的非公有属性是否存在时,自动调用此方法。
public function __isset($param){
return isset($this->$param);
}
__unset()当对未定义的变量调用unset()时,__unset() 会被调用。
//当unset销毁一个对象的非公有属性时,自动调用此方法。
public function __unset($param){
unset($this->$param);
}
4.2 方法的重载:
* mixed __call ( string $name , array $arguments )
mixed __callStatic ( string $name , array $arguments ) php5.3.0支持
当调用一个不可访问方法(如未定义,或者不可见)时,__call() 会被调用。
其中第一个参数表示方法名,第二参数表示调用时的参数列表(数组类型)
当在静态方法中调用一个不可访问方法(如未定义,或者不可见)时,__callStatic() 会被调用。
5、 继承
----------------------------------------------------------------------------
5.1. 继承:extends
假如B类继承A类,那么就继承了A中全部非私有属性和方法(函数)。
其中A叫父类(基类)。 B叫子类(派生类)
class B extends A{
....
}
在php中类只支持【单一继承】,就是一类只能继承一个父类。
parent关键字:若子类出现覆盖父类的方法,那么有时还想调用被覆盖掉了的方法,
咱们就是用关键字【parent::父类方法】还有使用类名
class A{
public function __construct(){
//....
}
}
class B extends A{
public function __construct(){
parent::__construct();//注意要调用一下父类的构造方法
//....
}
}
6、 final、static和const
---------------------------------------------------------------
6.1 final关键字:主要用于修饰类与成员方法(函数)
使用final关键字修饰类,表示这个类不能够有子类。(通常是没有必要有子类的,防止有子类的覆盖)
使用final关键字修饰的方法,不能够在子类中被覆盖(重写)。
目的:一是为了安全,二是没有必要
*6.2 static关键字:表示静态的意思: 用于修饰类的属性和方法
*static关键字修饰方法称为静态方法,能够不用new(实例化)就能够直接使用方法:如 类名::方法名
注意:静态方法在实例化后的对象也能够访问 //$对象名->静态方法名
static关键字修饰属性称为静态属性,能够不用new(实例化)就能够直接访问属性:如 类名::属性名
注意:静态属性在实例化后的对象不能够访问; //$对象名->静态属性名
注意:静态属性是共享的。也就是new不少对象也是共用一个属性
*在静态方法中不可使用非静态的内容。就是不让使用$this
在类的方法中可使用其余静态属性和静态方法,不过要使用self关键字:
如 【self::静态属性名】或【self::静态方法名】
(>PHP5.3)在一个类的方法中若没有出现$this的调用,默认此方法为静态方法。
*6.3. const关键字: 在类中修饰成员属性,将其定义成常量(不可修改的),
通常要求常量名都是大写的,没有“$”符 没有其余修饰符(public)
在其余方法中使用常量: 【self::常量名】
定义格式: const 成员常量名="值";
使用:在类的方法中: echo self::成员常量名;
在类的外部: echo 类名::成员常量名;
6.4. 检测当前对象是不是属性指定的类
instanceof 用于肯定一个 PHP 变量是否属于某一类 class 的实例:
is_a — 若是对象属于该类或该类是此对象的父类则返回 TRUE
7、 类型约束
----------------------------------------------------
1. 类型约束可使用的类型是:数组或对象。
若指定的一个类名,那么可传入本类及子类的对象进去。
可使用的约束类型:(复合类型)数组array,类名、抽象类名、接口名
//以下面的类
class MyClass
{
/**
* 测试函数
* 第一个参数必须为类OtherClass的一个对象
*/
public function test(OtherClass $otherclass) {
echo $otherclass->var;
}
/**
* 另外一个测试函数
* 第一个参数必须为数组
*/
public function test_array(array $input_array) {
print_r($input_array);
}
}
8、其余魔术方法:
-----------------------------------------------------------------
1. 对象复制clone 克隆一个对象,由于对象属于引用类型,普通的“=”号属于引用赋值,
全部须要clone来复制一份。
魔术方法:__clone() 当执行clone克隆时会自动调用的方法。
2. __toString()方法:魔术方法,当咱们直接要输出一个对象时,如echo $a,print $a,
那么会自动调用的方法。
注意:__toString()方法必须返回一个字串类型的值。
3. *自动加载类函数__autoload(类名):
当new 实例化一个对象时,这个类若不存在,则自动调用此函数,并将类名存入参数
我可使用这个实现类的自动加载。
9、 对象序列化(串行化)(webservice XML)(在对象持久化存储、和传输中使用)
----------------------------------------------------------------------------------------------
serialize() -- 串行化
unserialize() -- 反串行化
php里面的值均可以使用函数serialize()来返回一个包含字节流的字符串来表示。
unserialize()函数可以从新把字符串变回php原来的值。
序列化一个对象将会保存对象的全部变量,可是不会保存对象的方法,只会保存类的名字。
__sleep 和 __wakeup
__sleep(): 是执行串行化时自动调用的方法,目的是实现资源类型的属性实关闭操做。
注意:sleep方法须要返回一个数组,其中数组中的值是串行化时要保留的属性名
__wakeup():是在执行反串行化时自动调用的方法,目的是实现资源属性的打开(sleep方法关闭的资源)
public function __seep(){
return array('server', 'username', 'password', 'db');
//此串行化要保留四个属性
}
10、 抽象类:
-------------------------------------------------------------------------------------
当类中有一个方法,他没有方法体,也就是没有花括号,直接分号结束。
如 public abstract function fun();
象这种方法咱们叫抽象方法,必须使用关键字abstract定义,
包含这种方法的类必须是抽象类也要使用关键字abstract加以声明。
抽象类的特色:
不能实例化,也就new成对象
若想使用抽象类,就必须定义一个类去继承这个抽象类,并定义覆盖父类的抽象方法(实现抽象方法)。
其实抽象类对于子类(实现类),有一个约束的做用,
含有抽象方法的类确定是抽象类,可是不是全部的抽象类都必须包含抽象方法。
11、 接口:
-------------------------------------------------------------------------------------------------
假如一个抽象类中全部的方法都是抽象的,那么咱们可使用另一种方式定义:接口
接口使用关键字interface来定义,接口中只能有常量与抽象方法。
格式:
interface 接口名{
[常量定义]
[抽象方法定义] //注意不要有abstract关键字
}
实现方式:class 类名 implements 接口名,接口名2{
实现体。。
}
12、多态
-------------------------------------------------------------------------------------------
*多态(使用方式):对于同一个方法,传入不一样对象,实现了不一样的效果,这个就是多态的意思,
须要使用的技术:继承或实现,方法的覆盖(重写)。
实例:
主板:mainboard PCI插槽(规范接口)
第三方生产
声卡: soundCard
网卡: networkCard
设计模式:单例、单态设计模式
十3、异常处理:
--------------------------------------------------------------------------------
在php5中有一种新的错误处理机制--异常处理:(采用面向对象方式的)
涉及的类:Exception异常类
结构:
<?php
class Exception
{
protected $message = 'Unknown exception'; // 异常信息
protected $code = 0; // 用户自定义异常代码
protected $file; // 发生异常的文件名
protected $line; // 发生异常的代码行号
function __construct($message = null, $code = 0);
final function getMessage(); // 返回异常信息
final function getCode(); // 返回异常代码
final function getFile(); // 返回发生异常的文件名
final function getLine(); // 返回发生异常的代码行号
final function getTrace(); // backtrace() 数组
final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息
/* 可重载的方法 */
function __toString(); // 可输出的字符串
}
?>
使用:
1. throw new Exception("年龄不能够为负数"); //异常抛出
2. try{
//捕获异常
$s->age=30;
$s->age=-40;
3. }catch(Exception $e){
//异常处理
echo $e->getmessage();
}
php面向对象中的实用类:
==================================================================
1. Db.class.php 表数据信息操做类
2. page.class.php 分页类
方法:属性:URL地址、条件、总页数、总条数、页大小、当前 页
构造方法(参数:总条数、页大小、条件)
私有方法:计算最大页数、判断当前页数是否越界
输出分页信息方法:(输出给Model类中limit方法使用)
私有属性的getter方法(__GET());
输出分页信息方法(输出HTML代码)(就是:【上一页】【下一页】。。。。)
3. images.class.php 图片处理类(等比缩放、图片水印、裁剪);
4. fileupload.class.php 文件上传类
5. 验证码输出
==================
文件上传和下载笔记
=====================
1、 php.ini的配置信息
file_uploads = On /Off 是否容许文件上传
upload_max_filesize=2M 上传的文件的最大大小
post_max_size = 8M POST数据所容许的最大大小
upload_tmp_dir 上传文件放置的临时目录
注意配置:upload_max_filesize的大小必定要小于post_max_size的配置大小。
2、(发送客户端)上传的form表单:
一、 表单必须是post提交
二、 上传的类型:enctype="multipart/form-data"
三、上传使用的表单项
<input type="file" name=".." />
4.(可选)上传大小限制的表单隐藏域:MAX_FILE_SIZE,
<input type="hidden" name="MAX_FILE_SIZE" value="大小字节"/>
注意:此字段必须在文件输入字段以前(常放在form标签后面)
3、(接收服务器端):
1. 使用$_FILES全局数组来接收上传信息
在每一个上传的文件里,$_FILES中都会有5个属性:
error:上传的错误号:0--4
0:表示没有发生任何错误。
1:上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
2:表示上传文件大小超出了HTML表单隐藏域属性的MAX_FILE_SIZE元素所指定的最大值。
3:表示文件只被部分上传。
4:表示没有上传任何文件。
6:找不到临时文件夹
7:文件写入失败
name:上传的文件名
size:文件的大小
type:文件类型
tmp_name: 临时文件
2:is_uploaded_file() //是不是上传文件
3:move_uploaded_file() //执行移动上传文件
1.初始化上传文件信息
2.根据上传错误号判断上传是否成功
3.判断上传文件类型
4.判断上文件大小
5.随机上传文件名
6.执行上传文件处理
4、 下载设置:
header("Content-Type:类型"); //指定响应类型
header("Content-Disposition:attachment;filename=文件名"); //**执行下载文件名
header("Content-Length:文件大小");
readfile("./uploads/".$picname); //读取并输出图片内容;
**流程控制
1.语言结构,PHP程序结构分3种
顺序结构
分支结构
循环结构
特殊语句:break continue die/exit
2.分支结构:
2.1.单一分支结构
if(条件式){
条件式为true则执行此处
}
2.2双分支结构
if(条件式){
条件式为true则执行此处
}else{
条件式为false则执行此处
}
2.3elseif多分支语句
if(条件式1){
条件式1为true则执行此处
}elseif(条件式2){
条件式2为true则执行此处
...
}elseif(条件式n){
条件式n为true则执行此处
}else{
不然执行此处
}
2.4switch多分支结构
不要真假 要的是具体的值
switch(表达式){
case 值1:
...
break;
case 值2:
...
break;
case 值n:
...
break;
default:
...
break;
}
//12306话费查询服务 1 2 3 4 5 6 7
//值能够是什么:不能是变量,只能是标题字符串,整型,浮点数,布尔值
//经常使用数字 或者名字字符串 布尔值没有必要还不如用if else
2.5巢状嵌套分支结构
if(条件式1){
if(条件式2){
...
}else{
...
}
}else{
if(条件式3){
...
}else{
...
}
}
//判断是否登陆 登陆后判断是否有权限
3.循环结构
-----------------------------------------
3.1for循环
for(表达式1,表达式2,表达式3){
循环体语句组
}
表达式1:负责初始化循环条件(只执行一次)
表达式2:是否继续循环条件判断(循环次数n+1)
表达式3:影响循环条件(递增或递减等操做)(循环次数n次)
3.2while循环
表达式1
while(表达式2){
循环体
[表达式3]
}
3.3do...while循环
[表达式1]
do{
循环体
[表达式3]
}while(表达式2);
4特殊流程控制语句
------------------------------------------------
break 退出循环 //break;
continue 结束本次循环继续下一次
exit('') die('') 终止程序
1、 *php中错误分类:
1. 语法错误:
2. 运行时错误:
3. 逻辑错误:
2、 *在php.ini配置文件中,经常使用的错误和日志的配置。
error_reporting:错误等级
display_errors:在浏览器中是否显示错误信息
log_errors=On; 是否启动日志记录
ini_set() //php.ini配置信息临时设置函数
ini_set("display_errors","On"); //经过函数设置,实现当前脚本临时关闭错误输出。
error_reporting(E_ALL & ~E_NOTICE); //临时设置错误输出级别。
3、 PHP的日志记录方式:
---------------------------
*1. 采用文件记录,
2. 依靠系统的服务信息帮助记录
**1.采用文件记录日志
一、配置:在php.ini配置文件中配置以下信息
error_reporting = E_ALL //将向PHP发送每一个错误
display_errors=Off //不显示错误报告
* log_errors=On //决定日志语句记录的位置。
log_errors_max_log=1024 // 每一个日志项的最大长度
* error_log=G:/myerror.log //指定错误写进的文件
二、使用函数:在php文件中使用error_log()来记录日志,就能够将
信息写入到myerror.log文件中
如:error_log("登陆失败了!");//人为的记录错误信息
注意:当前php程序保错时,信息也会自动写入到myerror.log
2. 依靠系统的服务信息帮助记录日志
一、先配置PHP.ini文件中
error_reporting = E_ALL //将向PHP发送每一个错误
* display_errors=Off //不显示错误报告
* log_errors=On //决定日志语句记录的位置。
log_errors_max_log=1024 // 每一个日志项的最大长度
* error_log=syslog //指定到系统日志中。
二、使用四个函数来记录日志:
define_syslog_variables(); //为系统日志初始化配置
openlog(); //打开一个日志连接
syslog(); //发送一条日志记录
closelog(); //关闭日志连接
4、 日期/时间函数
========================================
checkdate -- 验证一个格里高里日期
date_default_timezone_get -- 取得一个脚本中全部日期时间函数所使用的默认时区
*date_default_timezone_set('PRC') -- 设定用于一个脚本中全部日期时间函数的默认时区
date_sunrise -- 返回给定的日期与地点的日出时间
date_sunset -- 返回给定的日期与地点的日落时间
**date -- 格式化一个本地时间/日期 date('Y-m-d H:i:s',mktime(时,分,秒,月,日,年))
getdate -- 取得日期/时间信息
gettimeofday -- 取得当前时间
gmdate -- 格式化一个 GMT/UTC 日期/时间
gmmktime -- 取得 GMT 日期的 UNIX 时间戳
gmstrftime -- 根据区域设置格式化 GMT/UTC 时间/日期
idate -- 将本地时间日期格式化为整数
localtime -- 取得本地时间
*microtime -- 返回当前 Unix 时间戳和微秒数microtime(true)
*mktime -- 取得一个日期的 Unix 时间戳
时分秒 月日年
strftime -- 根据区域设置格式化本地时间/日期
strptime -- 解析由 strftime() 生成的日期/时间
**strtotime -- 将任何英文文本的日期时间描述解析为 Unix 时间戳
**time -- 返回当前的 Unix 时间戳
============================
Classes/Object 函数
============================
参考手册中--与对象和类有关的扩展函数
1. class_alias — 为类建立一个别名
------------------------------------------------
格式:bool class_alias ([ string $original [, string $alias ]] )
示例:
class foo { }
class_alias('foo', 'bar');
$a = new foo;
$b = new bar;
// the objects are the same
var_dump($a == $b, $a === $b); //bool(true)
var_dump($a instanceof $b); //bool(false)
// the classes are the same
var_dump($a instanceof foo); //bool(true)
var_dump($a instanceof bar); //bool(true)
var_dump($b instanceof foo); //bool(true)
var_dump($b instanceof bar); //bool(true)
*2. class_exists — 检查类是否已定义
-----------------------------------------------------------
格式: bool class_exists ( string $class_name [, bool $autoload ] )
--若是由 class_name 所指的类已经定义,此函数返回 TRUE,不然返回 FALSE。
默认将会尝试调用 __autoload,若是不想让 class_exists() 调用 __autoload,
能够将 autoload 参数设为 FALSE。
3. get_called_class — the "Late Static Binding" class name
---------------------------------------------------------------------
(PHP 5 >= 5.3.0) 获取调用者的类名
*4. get_class_methods — 返回由类的方法名组成的数组
----------------------------------------------------------------------
格式:array get_class_methods ( mixed $class_name )
返回由 class_name 指定的类中定义的方法名所组成的数组。若是出错,则返回 NULL。
从 PHP 4.0.6 开始,能够指定对象自己来代替 class_name
5. get_class_vars — 返回由类的默认公有属性组成的数组
-----------------------------------------------------------------------
格式: array get_class_vars ( string $class_name )
返回由类的默认公有属性组成的关联数组,此数组的元素以 varname => value 的形式存在。
*6. get_class — 返回对象的类名
-----------------------------------------------------------------------
格式: string get_class ([ object $obj ] )
返回对象实例 obj 所属类的名字。若是 obj 不是一个对象则返回 FALSE。
7. get_declared_classes — 返回由已定义类的名字所组成的数组
--------------------------------------------------------------------------
格式:array get_declared_classes ( void )
返回由当前脚本中已定义类的名字组成的数组。
8. get_declared_interfaces — 返回一个数组包含全部已声明的接口
--------------------------------------------------------------------------
格式:array get_declared_interfaces ( void )
本函数返回一个数组,其内容是当前脚本中全部已声明的接口的名字。
9. get_object_vars — 返回由对象属性组成的关联数组
------------------------------------------------------------------
格式:array get_object_vars ( object $obj )
返回由 obj 指定的对象中定义的属性组成的关联数组。
10. get_parent_class — 返回对象或类的父类名
------------------------------------------------------------------
格式:string get_parent_class ([ mixed $obj ] )
若是 obj 是对象,则返回对象实例 obj 所属类的父类名。
11. interface_exists — 检查接口是否已被定义
------------------------------------------------------------------
格式:bool interface_exists ( string $interface_name [, bool $autoload ] )
本函数在由 interface_name 给出的接口已定义时返回 TRUE,不然返回 FALSE。
*12. is_a — 若是对象属于该类或该类是此对象的父类则返回 TRUE
咱们可使用运算符: instanceof代替上面的is_a操做
------------------------------------------------------------------
格式:bool is_a ( object $object , string $class_name )
若是对象是该类或该类是此对象的父类则返回 TRUE,不然返回 FALSE。
13. is_subclass_of — 若是此对象是该类的子类,则返回 TRUE
------------------------------------------------------------------
格式:bool is_subclass_of ( object $object , string $class_name )
若是对象 object 所属类是类 class_name 的子类,则返回 TRUE,不然返回 FALSE。
*14. method_exists — 检查类的方法是否存在
--------------------------------------------------------------------
格式:bool method_exists ( object $object , string $method_name )
若是 method_name 所指的方法在 object 所指的对象类中已定义,则返回 TRUE,不然返回 FALSE。
*15. property_exists — 检查对象或类是否具备该属性
--------------------------------------------------------------------
格式:bool property_exists ( mixed $class , string $property )
本函数检查给出的 property 是否存在于指定的类中(以及是否能在当前范围内访问)。
===================================
PHP_MySQL的操做
===================================
1、操做步骤:
1. 链接MySQL数据库
2. 判断是否链接成功
3. 选择数据库
4. 设置字符集
5. 准备SQL语句
6. 向MySQL服务发送SQL语句
7. 解析处理结果集
8. 释放结果集,关闭数据库链接
2、经常使用操做:
1. mysql_connect();--链接数据库,并返回一个链接资源
格式: mysql_connect(主机名,用户,密码);
--其中参数可选,若不写则参考php.ini中默认配置
2. mysql_error(); --获取刚刚(最后)执行数据库操做的错误信息
3. mysql_errno(); --获取刚刚(最后)执行数据库操做的错误号
错误号为0表示没有错误
4. mysql_select_db(数据库名[,数据库链接]);
选择一个数据库,等同于"use 库名"语句
5. mysql_set_charset(字符编码); --设置字符编码
例如:mysql_set_charset("utf8"); 等同于:mysql_query("set names utf8");
6. mysql_query(sql语句[,数据库链接]); -- 发送一条sql语句
sql语句如果查询,则返回结果集,其余则返回boolean值表示执行是否成功。
7. 解析结果集函数:
mysql_fetch_array(); --以关联和索引两种方式数组解析结果集
也能够指定第二参数来定义返回格式:
MYSQL_BOTH(0关联和索引)/MYSQL_NUM(2索引)/MYSQL_ASSOC(1关联)
mysql_fetch_row(); --以索引式数组解析结果集
*mysql_fetch_assoc(); --以关联式数组解析结果集
mysql_fetch_object(); --以对象方式解析结果集
8. mysql_free_result(结果集名); --释放结果集
9. mysql_close(数据库链接); --关闭数据库链接
10. mysql_num_rows(结果集); --获取结果集中的数据条数
11. mysql_num_fields(结果集); --获取结果集中的列数(字段数量)
12. mysql_result(); --定位取结果
echo mysql_result($result,0,3)."<br/>"; //获取第1条数据的第4列中的值
echo mysql_result($result,1,2)."<br/>"; //获取第2条数据的第3列中的值
echo mysql_result($result,5,4)."<br/>"; //获取第6条数据的第5列中的值
13.mysql_affected_rows — 取得前一次 MySQL 操做所影响的记录行数
关联的 INSERT,UPDATE 或 DELETE 查询所影响的记录行数。
14. mysql_insert_id — 取得上一步 INSERT 操做产生的 ID
PHP带来的真正价值在于:将从资源(如数据库和表单值)获得的动态信息放入web页面中。
计算机中的全部数据,最基本的单位是比特(bit),也叫位,即一个二进制数据,用0/1表示。数据的最小寻址单位成为字节(一般是8bit,以8位位一组)。
在同一时间,计算机能处理的二进制的位数叫字长。
32位计算机在同一时间能处理字长为32位的二进制数据。
64位计算机技术从2004年推出至今,目前尚未获得大规模应用。
字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1字节等于8位二进制。字节的英文是Byte,是Binary Term的缩写。Byte(字节)可被缩写成B,例如MB表示MegaByte。
1bit=1位/比特(二进制数据)
1Byte=8bit(字节,Binary Term)
1字母=1(Byte)字节=8bit
1汉字=2Byte(字节)=16bit
1KB=1024Byte(2的10次方字节)(KB,KiloByte)
1MB=1024KB(2的20次方字节)(MB,MegaByte)
1GB=1024MB(2的30次方字节)(GibaByte)
1TB=1024GB(2的40次方字节)(TB,TeraByte)
在计算机中,负数以其正值的补码形式表示。
原码:一个整数,按照绝对值大小转换成二进制数,成为原码。
反码:(相互的)将二进制数按位取反,所得的新二进制数称为原二进制的反码。
(1变0,0变1)
补码:反码加1称为补码。
编程语言是用来解决问题的。
PHP主要有4种基本数据类型:布尔型(boolean)、整型(integer)、浮点型(float)、字符串(string)。
在编程语言中,常见的数据类型为原始类型。
变量的类型一般不是由程序员决定,而是由PHP运行过程决定。
PHP还有两种复合类型:数组(array)和对象(object)。
两种特殊类型:null和资源(resource)。
1)整数或浮点数又统称为数值类型。
程序语言的三大基本知识点:
数据类型、控制结构、数据结构。
字符串链接操做符(.):
处理字符串是PHP应用的核心部分,链接字符串将右边的操做数添加到左边的操做数后面,并返回结果字符串。
PHP支持许多传统编程结构来控制程序执行流程。
条件语句(如if/else和switch)依据一些条件,容许程序去执行代码的不一样块或根本不执行。循环(如while和for)支持重复执行特定代码。
eg:for(start; condition; increment){
statement;
}
1.为何函数能够在任意位置调用执行?
由于PHP3引擎在解析的时候第一件事情是拿到函数,将函数放到内存中。
2.函数里return和echo的区别?
在函数里面,echo一个值仅仅会输出,调用函数的时候,输出的值不会赋值给变量($a);return是将return后面的值,返回到调用处,值能够赋给变量。
3.形参为局部变量。
系统函数的使用:
七个注意事项:
1.带bool值的一般是操做成功没成功,或者是对不对,有没有.....
2.若是看到带mixed的是指能够传入任意类型的数据。
3.带&符的只可以传变量,传了变量后,若是函数里面改变其值,函数外面也直接改变值。
4.带[]的表明可选,能够传也能够不传。
5.带......的表明能够传入任意多个元素。
6.callback是传回调函数。
7.有事没事看手册,练手册当中的函数。
PHP数组:一维数组,能够向数组当中放入不一样的各个类型的数据。
向数组中追加一个元素:$array[]="键"=>"值"/"值";
经过数组变量[下标]=值,来修改数组当中的一个值。
遍历:一个一个读出来。
采用for循环,来遍历一个数组。有局限性:只可以遍历连续的索引数组。
使用foreach来遍历数组。
foreach($array as [$key=>]$value){
代码执行区间;
}
两个以上方法公有属性,应写成成员属性。
isset():能够向里面传入多个变量,中间用逗号隔开,只要里面有一个为空(必定是null才能够),就返回真值,只能判断是否为null;
empty():只能向里面传入一个值,若是为0,就返回真值,(注意:这个额能够判断是否非0,而isset()判断是否为空的);
isset():必定要为其中一个变量为空(Null),结果为假,不然就是真。(为0的状况,也是真)。
查看变量是否已经设置(即便是空字符串),用isset();
用unset()来删除一个变量的值;
unset()将变量完全来删除;
优先级规则缩减到两条:
1.乘法和除法的优先级高于加法和减法;
2.其余的地方用括号。
自定义函数的基本语法结构:
//参数列表,用处是接受数据;
function 函数名(参数列表){
//函数体;(完成某一个功能的指令集合,这个必须有)
//return语句;(return语句主要的用处是返回一个结果,这个能够没有)
}
++$i和$i++的区别是:前者是加了以后再判断,后者是判断以后再运算。
1.类是抽象的,表明着一类事物;
2.对象是具体的,是类的一个具体实例;
3.类是对象的模板,对象是类的一个个体实例。
class 类名{
成员属性;(变量)
成员方法;(函数)
}
1.$this:本质上能够理解就是这个对象的地址;
2.哪一个对象使用到$this,就是哪一个对象地址;
3.$this不能在类外部使用;