PHP

0x01 标记风格
1.脚本风格:

<script language="php">	echo '这是脚本风格的标记'; </script>

2.简短风格:

<? echo '这是简短风格的标记'; ?>

3.ASP风格:

<% echo '这是ASP风格的标记'; %>

简短风格和ASP风格需要在php.ini中配置。
将short_open_tag和asp_tags都设置为ON,重启Apache服务器。

0x02 注释
1.//
2.//
3.#

0x03 数据类型
1.数组

$array=array(0=>'php','aaa'='info'); echo $array['aaa'];#输出info

2.判断数据类型
is_numeric 是否为数字或由数字组成的字符串

0x04 运算符
^ 异或
~ 取反
<< 左移

0X05 循环语句
do while先执行一遍程序块,然后再对表达式进行判断。
foreach用于遍历数组,数组指针将被自动重置。

0x06 单引号和双引号的区别
双引号中所包含的变量会自动被替换成实际数值,而单引号中包含的变量则按普通字符串输出。

0x07 字符串操作
1.去除字符串首尾空格和特殊字符

trim()、ltrim()、rtrim()
\0、\t、\n、\x0B、\r、空格

2.转义字符串

addslashes(str)、stripslashes(str)
addcslashes(str,charlist)、stripcslashes(str)

3.获取字符串长度

strlen(str)
#汉字占两个字符,数字、英文、小数点、下划线和空格占一个字符

4.截取字符串

substr(str,start[,length])
#从指定位置开始截取字符串,0代表第一个字符

5.比较字符串

strcmp()、strcasecmp()
#按字节进行字符串比较,前者区分大小写,后者不区分。
#相等返回0,大于返回值大于0,小于返回值小于0。
strnatcmp()、strnatcasecmp()
#比较字符串中的数字部分,会将除数字之外的部分作为分隔符,前者区分大小写,后者不区分。
#相等返回0,大于返回值大于0,小于返回值小于0。
strncmp(str1,str2,length)
#每个字符串中参与比较的字符数量
#相等返回0,大于返回值大于0,小于返回值小于0。

6.检索字符串

strstr(haystack,needle)、stristr()
#查找的字符串,查找的对象。
#ASCII值作对比,前者区分大小写,后者不区分。
strchr()
#同strstr()
substr_count(haystack,needle)
#检索子串出现次数

7.替换字符串

str_ireplace(search,replace,subject[,count])
#将subject中的search替换为replace,count代表执行替换的数量。区分大小写。
substr_replace(subject,replace,start[,length])
#从start开始将subject替换为replace,替换长度为length

8.格式化字符串

number_format(float number,[int 
num_decimal_places],[string dec_seperator],string 
thousands_ seperator)
#number_format()函数可以有一个、两个或是4个参数,但不能是3个参数。如果只有一个参数number,number格式化后会舍去小数点后的值,且每一千就会以逗号(,)来隔开;如果有两个参数,number格式化后会到小数点第num_decimal_places位,且每一千就会以逗号来隔开;如果有4个参数number格式化后会到小数点第num_decimal_places位,dec_seperator用来替代小数点(.),thousands_seperator用来替代每一千隔开的逗号(,)

9.分隔字符串

explode(string separator,string str,[int limit])
#分隔符为separator,被分割字符串为str,limit为返回长度

10.合成字符串

implode(string glue,array pieces)
#分隔符为glue,被转换数组为pieces,结果为数组中的每一个值用glue连接

0x08 正则表达式
1.行定位符

^		开始
$		结尾

2.单词定界符

\b 		查找一个完整的单词
\B 		与\b相反

3.字符类

[]		单字符匹配

4.选择字符

|

5.连字符

-		[a-zA-Z]

6.排除字符

[^]

7.限定符

?		匹配前面的字符零次或一次
+		匹配前面的字符一次或多次
*		匹配前面的字符零次或多次
{n,m}	匹配前面的字符[n,m]次

8.点号字符

.		匹配除换行符外任意一个字符

9.转义字符

\		匹配ip地址,[0-9]{1,3}(\.[0-9]{1,3}){3}

10.反斜线
显示不可打印的字符

\a 		警报,<BEL>
\b 		退格,<BS>
\e 		Escape,<ESC>
\f 		换页符,<FF>
\n 		换行符,<LF>
\r 		回车符,<CR>
\t 		水平制表符,<HT>
\xhh	十六进制代码
\ddd	八进制代码
\cx		control-x,由x指名控制字符

预定义字符集

\d 		任意一个十进制数字,相当于[0-9]
\D 		任意一个非十进制数字
\s 		任意一个空白字符,相当于[\f\n\r\t]
\S 		任意一个非空白字符
\w 		任意一个单词字符,相当于[a-zA-Z0-9]
\W 		任意一个非单词字符

限定符

\b 		单词分界符
\B 		非单词分界符
\A 		匹配待搜索文本的起始位置
\z 		只匹配字符串的末尾,而不考虑任何换行符
\Z 		匹配字符串的末尾位置,或者是在字符串末尾的换行符之前的位置
\G		当前匹配的起始位置

11.括号字符

改变限定符的作用范围
分组
反向引用

12.模式修饰符

i 		忽略大小写模式
M 		多文本模式,子串内部有多个换行符时,影响"^"和"$"的匹配
s 		单文本模式,在此模式下,元字符点号(.)可以匹配换行符。其他模式不能匹配换行符
X 		忽略空白字符

0x09 POSIX扩展正则表达式函数
1.ereg()函数和eregi()函数

bool ereg/eregi ( string pattern, string string [, array regs] )
# 在string中匹配pattern,若成功返回true,失败返回false。子串存储到regs数组中
# eregi不区分大小写

2.ereg_replace()函数和eregi_replace()函数

string ereg_replace/eregi_replace ( string pattern, string replacement, string string )
# 在字符串string中匹配pattern。如果成功,则替换为replacement。
# eregi_replace()不区分大小写

3.split()函数和spliti()函数

array split/spliti ( string pattern, string string [, int limit] )
# 通过pattern分隔字符串string,limit代表分割上限数量
# spliti()不区分大小写

0x10 PCRE兼容正则表达式函数
1.preg_grep()函数

array preg_grep ( string pattern, array input )
# 将数组中的每一个元素跟pattern进行匹配,将匹配命中的元素组成一个新数组并返回

2.preg_match()函数和preg_match_all()函数

int preg_match/preg_match_all ( string pattern, string subject [, array matches] )
# 在字符串subject中匹配pattern,返回命中次数。匹配结果存入matches中
# preg_match()匹配中一次即停止,preg_match_all()会匹配到最后,必须有参数matches

3.preg_quote()函数

string preg_quote ( string str [, string delimiter] )
# 将str中所有特殊字符进行转义,delimiter为自定义特殊字符

4.preg_replace()函数

mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
# 在字符串subject中匹配pattern,将命中项替换为replacement,limit为替换次数

5.preg_replace_callback()函数

mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit] )
# 与preg_replace()函数功能相同,replacement用函数callback替换,即可用函数结果作为替换值

6.preg_split()函数

array preg_split ( string pattern, string subject [, int limit ] )
# 使用pattern分隔字符串subject,limit为数组元素上限个数

0x11 数组
1.数组类型
数字索引数组、关联数组
2.数组遍历

foreach()、list()
foreach操作数组的一个备份,list函数仅能用于数字索引数组

3.字符串与数组的转换

array explode(string separator, string string, [int limit])
将字符串string以seperator为分隔符进行分隔,变成数组。
string implode(string glue, array pieces)
将数组pieces用glue连接起来。

4.数组元素个数

int count ( mixed array [, int mode])

5.查询数组中的指定元素

mixed array_search ( mixed needle, array haystack [, bool strict])
#在数组haystack中搜索needle,strict检查类型,若找到返回键名

6.获取数组中最后一个元素

mixed array_pop(array array)

7.向数组中添加元素

int array_push ( array array, mixed var [, mixed ...])
#将var添加到array中

8.删除数组中重复元素

array array_unique ( array array)

0x12 表单
1.创建表单

<form name="form_name"  method="method" action="url"  enctype="value"  target="target_win"></form >

2.表单元素
输入域标记

<input name="file_name"  type="type_name">
text、password、file、image、radio、checkbox、submit、reset、button、hidden

选择域标记

<select name="name" size="value" multiple>
	<option value="value" selected>选项1</option>
	<option value="value">选项2</option>
	<option value="value">选项3</option>
</select>

文字域标记

<textarea name="name" rows=value cols=value value="value" warp="value">
	…文本内容
</textarea>

3.表单传输方式
POST 不依赖于URL,不限制数据传输,后台传输安全性高
GET 依赖于URL,限制数据传输大小,显示URL+用户传递的参数。
4.参数传递方法

$_POST[]、$_GET[]、$_SESSION[]

0x13 Cookie&Session
1.创建Cookie

bool setcookie(string name[,string value[,int expire[, string path[,string domain[,int secure]]]]])
#cookie变量名name;cookie变量值value;expire为cookie失效时间单位为秒。
#path为cookie在domain下有效的范围,默认是当前目录;domain为cookie有效的域名,尽量最小化。
#secure值是否仅通过HTTPS连接有效,1为是,0为否。

2.cookie的生命周期
若不设置过期时间,只有关闭浏览器时,cookie才会消失。
cookie保存在内存中,不保存在磁盘上。
3.创建Session

bool session_start(void) ;		#创建会话
$_SESSION['admin'] = 'admin';	#注册会话,给变量赋值
if(!empty($_SESSION['admin']))	#判断是否为空
	$a=$_SESSION['admin'];		#将会话变量赋值给$a

4.Session缓存

string session_cache_limiter ( [string cache_limiter])
#使用
int session_cache_expire ( [int new_cache_expire])
#缓存单位为分钟
bool session_set_save_handler ( string open, string close, string read, string write, string destroy, string gc)
<!-- 
参数								说明
session_open(save_path,session_name) 	找到Session存储地址,取出变量名称 
session_close() 						不需要参数,关闭数据库 
session_read(key) 						读取Session键值,key对应session_id 
session_write(key,data) 				其中data对应设置的Session变量 
session_destroy(key) 					注销Session对应Session键值 
session_gc(expiry_time) 				清除过期Session记录  
-->

0x14 文件处理
1.打开文件

resource fopen ( string filename, string mode [, bool use_include_path]);
#filename是要打开的包含路径的文件名,可以是相对路径,也可以是绝对路径。如果没有任何前缀则表示打开的是本地文件。
#mode是打开文件的方式
#use_include_path是可选的,该参数在配置文件php.ini中指定一个路径,如F:\AppServ\ www\mess.php,如果希望服务器在这个路径下打开所指定的文件,可以设置为1或 true。

2.关闭文件

bool fclose ( resource handle ) ;

3.读取文件
1)读取整个文件
(1)readfile()函数

int readfile(string filename) ;
#readfile()函数用于读入一个文件并将其写入到输出缓冲,如果出现错误则返回false。
#使用readfile()函数,不需要打开/关闭文件,不需要echo/print等输出语句,直接写出文件路径即可。

(2)file()函数

array file(string filename) ;
#file()函数也可以读取整个文件的内容,只是file()函数将文件内容按行存放到数组中,包括换行符在内。如果失败则返回false。

(3)file_get_contents()函数

string file_get_contents(string filename[,int offset[,int maxlen]]) ;
#该函数将文件内容(filename)读入一个字符串。如果有offset和maxlen参数,将在参数offset所指定的位置开始读取长度为maxlen的内容。如果失败,返回false。
#适用于二进制对象,是将整个文件的内容读入到一个字符串中的首选方式。

2)读取一行数据
(1)fgets()函数

string fgets( int handle [, int length] ) ;
#handle是被打开的文件,length是要读取的数据长度。
#函数能够实现从handle指定文件中读取一行并返回长度最大值为length-1个字节的字符串。在遇到换行符、EOF或者读取了length-1个字节后停止。如果忽略length参数,那么读取数据直到行结束。

(2)fgetss()函数

string fgetss ( resource handle [,int length [,string allowable_tags]] ) ;
#fgetss()函数是fgets()函数的变体,用于读取一行数据,同时,该函数能够从读取的文件中过滤掉任何html和php标记。可以使用allowable_tags参数来控制哪些标记不被过滤掉。

3)读取一个字符

fgetc()函数
string fgetc ( resource handle ) ;
#在对某一个字符进行查找、替换时,需要有针对性地对某个字符进行读取,在PHP中可以使用fgetc()函数实现此功能。函该函数返回一个字符,该字符从handle指向的文件中得到。遇到EOF则返回false。 

4)读取任意长度的字串

fread()函数
string fread ( int handle, int length ) ;
#fread()可以从文件中读取指定长度的数据
#参数handle为指向的文件资源,length是要读取的字节数。当函数读取length个字节或到达EOF时停止执行。

4.写入文件

int fwrite ( resource handle, string string [, int length] ) ;
#该函数把内容string写入文件指针handle处。如果指定了长度length,则写入length个字节后停止。如果文件内容长度小于length,则会输出全部文件内容。

int file_put_contents ( string filename, string data [, int flags]) ;
#filename为写入数据的文件。data为要写入的数据。flags可以是FILE_USE_INCLUDE_PATH、FILE_APPEND或LOCK_EX,LOCK_EX为独占锁定。
#注意:使用file_put_contents()函数和依次调用fopen()、fwrite()、fclose()函数的功能一样。 

5.远程文件访问

fopen('http://127.0.0.1/tm/sl/index.php','rb'); 
#PHP支持URL格式的文件调用,只要在php.ini中配置一下即可。在PHP中找到allow_url_fopen,将该选项设为ON。重启服务器后即可使用HTTP或FTP的URL格式。

6.文件指针
1)rewind()函数

bool rewind ( resource handle ) ;
#该函数将文件handle的指针设为文件流的开头

2)fseek()函数

int fseek ( resource handle, int offset [, int whence] ) ;
#fseek()函数实现文件指针的定位
#handle参数为要打开的文件。offset为指针位置或相对whence参数的偏移量,可以是负值。
#whence的值包括以下3种:
   SEEK_SET,位置等于offset字节。
   SEEK_CUR,位置等于当前位置加上offset字节。 
   SEEK_END,位置等于文件尾加上offset字节。
#如果忽略whence参数,系统默认为SEEK_SET。

3)feof()函数

bool feof ( resource handle ) ;
#该函数判断文件指针是否在文件尾,如果文件指针到了文件结束的位置,就返回true,否则返回false。

4)ftell()函数

int ftell ( resource handle ) ;
#返回当前指针的位置

7.文件上传
要想顺利地实现上传功能,首先要在php.ini中开启文件上传,并对其中的一些参数作出合理的设置。

找到File Uploads项,可以看到下面有3个属性值,表示含义如下。
file_uploads:如果值是on,说明服务器支持文件上传;如果为off,则不支持。
upload_tmp_dir:上传文件临时目录。在文件被成功上传之前,文件首先存放到服务器端的临时目录中。如果想要指定位置,可在这里设置。否则使用系统默认目录即可。
upload_max_filesize:服务器允许上传的文件的最大值,以MB为单位。系统默认为2MB,用户可以自行设置。除了File
Uploads项,还有几个属性也会影响到上传文件的功能。
max_execution_time:PHP中一个指令所能执行的最大时间,单位是秒。
memory_limit:PHP中一个指令所分配的内存空间,单位是MB。

$_FILES变量存储的是上传文件的相关信息,这些信息对于上传功能有很大的作用。该变量是一个二维数组。保存的信息 如下:
$_FILES[filename][name]存储了上传文件的文件名。如exam.txt、myDream.jpg等
$_FILES[filename][size]存储了文件大小。单位为字节
F I L E S [ f i l e n a m e ] [ t m p n a m e ] 文 件 上 传 时 , 首 先 在 临 时 目 录 中 被 保 存 成 一 个 临 时 文 件 。 该 变 量 为 临 时 文 件 名 _FILES[filename][tmp_name]文件上传时,首先在临时目录中被保存成一个临时文件。该变量为临时文件名 FILES[filename][tmpname]_FILES[filename][type]上传文件的类型 $_FILES[filename][error]存储了上传文件的结果。如果返回0,说明文件上传成功

PHP中使用move_uploaded_file()函数上传文件。该函数的语法如下: bool move_uploaded_file (
string filename, string destination )
move_uploaded_file()函数将上传文件存储到指定的位置。如果成功,则返回true,否则返回false。参数filename是上传文件的临时文件名,即$_FILES[tmp_name];参数destination是上传后保存的新的路径和名称。
PHP支持同时上传多个文件,只需要在表单中对文件上传域使用数组命名即可。

0x15 PHP操作mysql数据库
1.连接数据库

mysql_connect('hostname','username','password');

2.选择数据库

mysql_select_db(string 数据库名[,resource link_identifier]);
#如果没有指定连接标识符,则使用上一个打开的连接

3.执行SQL语句

mysql_query(string query[,resource link_identifier]);
#成功则返回true,失败返回false

4.获取sql执行结果

mysql_fetch_array(resource result[,int result_type])
#result:需要mysql_query返回的数据指针
#result_type:要传入的是MYSQL_ASSOC(关联索引)、MYSQL_NUM(数字索引)、MYSQL_BOTH(同时包含关联和数字索引的数组),默认值是MYSQL_BOTH。

5.获取sql执行结果的一行

mysql_fetch_object (resource result);
#使用$row->name获取name列中的元素

6.逐行获取sql执行结果

mysql_fetch_row(resource result);
#使用$row[0]获取第一个元素

7.计算sql执行结果有多少行

mysql_num_rows(resource result);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值