PHP:
- PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。
平台:Windows
数据库支持:MySQL
目的:实现网站
一.网站(website)
1.网站:
静态网站:.htm, .html, .xml;
动态网站:.asp, .jsp, .php (标志性符号:“?”)
2.服务器(server):
能够提供服务的机器,取决于机器上所安装的软件(为电脑提供服务的电脑)
3.IP(Internet protocol):
4.域名(domain name):
<eg:www.itcast.cn>
>>特殊IP:127.0.0.1 特殊域名:localhost(代表本机)
5.DNS:
域名系统(输入域名localhost>>>DNS{localhost,127.0.0.1}>>>服务器电脑)
6.端口:
虚拟端口 物理端口
(输入域名localhost:端口>>>DNS{localhost,127.0.0.1}>>>服务器电脑>>>服务软件)
7.URL:
URL由协议(http)、域名、路径和查询字符串组成。
二.web程序的访问流程
输入域名>>>DNS>>>服务器电脑>>>服务软件
URL:uniformed resource location
三.PHP语法初步
可以嵌入HTML中
1.PHP代码标记(区分PHP脚本与HTML)
ASP标记:<% (php代码) %>
短标记:<? (php代码) ?>
脚本标记:<script language>="php"> (php代码) </script>
标准标记(常用):<?php (php代码) ?>
2.PHP注释
代码必须进行注释
行注释:// 或者 #
块注释:/**/
3.PHP语句分隔符
语句分隔符:以行为单位,系统需要判断行的结束(英文状态下的分号: ;)
>>特殊说明:
PHP中结束标记符?>自带语句结束符的效果,即在最后一句结尾可以没有分号
(parse error:解析你的错误; syntax error:语法错误)
4.变量
PHP是一种动态网站开发的脚本语言,会有数据的传递,需要有PHP通过变量存储数据(临时存储)
1.变量的使用:
定义---能够赋值---可以通过变量名访问数据---可以修改,删除变量
>>定义:不需要任何关键字(eg:int,float),但需要加"$";
>>访问变量:echo(输出)
>>修改变量:代码按顺序运行
>>删除变量:unset(变量名)
2.变量的命名规则:
- 变量以 $ 符号开头,其后是变量的名称
- 变量名称必须以字母或下划线开头
- 变量名称不能以数字开头
- 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
- 变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
注释:PHP 变量名称对大小写敏感!
如果为变量赋的值是文本,请用引号包围该值。
3.可变变量:
一个变量保存的值刚好是另外一个变量的名字
//"$$var" 就是可变变量;在已声明的变量$var前又加上了一个变量符
$a='b';
$b='bala bala';
echo $$a;
4.预定义变量(外部变量):
系统定义的变量,存储许多需要用到的数据(预定义变量都是数组)
PHP的外部变量是PHP在使用过程中规定好的一些变量。
highlight_file(__FILE__);
For example:
>>>这个变量的规定是这样定的:
<html>
<head>
</head>
<body>
<!-- 这一行method 对应的值改为post --->
<form action="req.php" method="post">
<input type="text" name="username"/>
<input type="password" name="pwd"/>
<input type="submit" name="提交"/>
</form>
</body>
</html>
>>>PHP代码调用以上HTML代码中的外部变量方法如下所示:
<?php
//*$_POST[‘username’],将username作为字符串放在中括号里面,就得到了表单里面的<input type=”text”name=”username”/>的值*//
$u = $_POST['username'];
echo $u.'<br />';
/*$_POST[‘pwd’],将pwd作为字符串放在中括号里面,就得到了表单里面的<input type=”text”name=”pwd”/>的值*/
$passwd = $_POST['pwd'];
echo $passwd.'<br />';
?>
5.变量传值:将一个变量传给另外一个变量
值传递:
引用传递:
在内存中,通常有以下几个分区:
栈区:程序中可以操作的部分(不存数据,运行程序代码)
代码段:存储程序的内存部分,不执行
数据段:存储普通数据(全局区和静态区)
堆区:存储复杂数据,大但是效率低
小知识:
>>>正则表达式
一.限定符:
1.问号:eg:used?(?前面的字符可有可无,即该表达式可匹配use及used)
2.星号:eg:ab * c(匹配a和c之间存在零个或多个b的字符)
3.加号:eg:ab+c(匹配a和c之间存在一个以上的b的字符)
4.花括号:eg:ab{6}c(b出现的次数为六次)
ab{2,6}c(b出现的次数为二到六次) ab{2,}c(b出现的次数为二次以上)
5.括号:eg:(ab)+ 匹配文段中ab的出现
二.“或”运算符:
竖线: '|' eg: a(cat | dog)==a cat +a dog
三.字符类:
方括号:[ ] eg:[abc]+ (表示文段中匹配的字符只能取自a,b,c);【a-z】(所有的小写字符)
尖号:^ (表示要求匹配除了尖号后面列出的【以外的】字符)
四.元字符
大多数元字符一反斜杠(\)开头
\d:数字字符
\w:单词字符(等同于【A-Z a-z 0-9】)
>>>键和值:
在参数中,键表示参数的名称,用于标识参数。值表示参数的具体内容或数据。例如,在`?num=1`中,"num"是键,"1"是值。
这种用法是为了将参数的键和值进行关联,以便服务器能够正确地获取和解析这些参数。事实上,这个等号并不表示数学上的等于关系,而是作为分隔符来区分参数的键和值。
正则表达式修饰符
>>>intval函数
`intval()`是一个在PHP中常用的函数,用于将一个值转换为整数。它的作用是将传入的参数转换为整数类型,并返回转换后的整数值。
`intval()`函数只可以接受一个或两个参数:
- 如果只传递一个参数,它将尝试将该参数转换为整数。如果参数是一个数字字符串,它将返回相应的整数值。如果参数是一个数组,它将返回1。如果参数是一个非数字字符串,它将返回0。
- 如果传递了两个参数,第一个参数是要转换的值,第二个参数是可选的进制值。进制值指定了要将值转换为的进制(如二进制、八进制、十六进制等)。如果不提供进制值,默认为10(十进制)。
以下是一些使用`intval()`函数的示例:
$num1 = "123";
$result1 = intval($num1);
echo $result1; // 输出 123
$num2 = "abc";
$result2 = intval($num2);
echo $result2; // 输出 0
$num3 = "101010";
$result3 = intval($num3, 2);
echo $result3; // 输出 42,将二进制字符串转换为十进制整数
num=4476e123 //输出4476,此时只看字母前面的
>>>preg_match函数
preg_match 函数用于执行一个正则表达式匹配。
语法
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
搜索 subject 与 pattern 给定的正则表达式的一个匹配。
参数说明:
-
$pattern: 要搜索的模式,字符串形式。
-
$subject: 输入字符串。
-
$matches: 如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推。
-
$flags:flags 可以被设置为以下标记值:
PREG_OFFSET_CAPTURE: 如果传递了这个标记,对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的)。 注意:这会改变填充到matches参数的数组,使其每个元素成为一个由 第0个元素是匹配到的字符串,第1个元素是该匹配字符串 在目标字符串subject中的偏移量。 -
offset: 通常,搜索从目标字符串的开始位置开始。可选参数 offset 用于 指定从目标字符串的某个未知开始搜索(单位是字节)。
返回值
返回 pattern 的匹配次数。 它的值将是 0 次(不匹配)或 1 次,因为 preg_match() 在第一次匹配后 将会停止搜索。preg_match_all() 不同于此,它会一直搜索subject 直到到达结尾。 如果发生错误preg_match()返回 FALSE。
eg one:
<?php
/* 模式中的 \b 标记一个单词边界,所以只有独立的单词"web"会被匹配,而不会匹配 * 单词的部分内容比如"webbing" 或 "cobweb" */
if (preg_match("/\bweb\b/i", "PHP is the web scripting language of choice."))
{ echo "查找到匹配的字符串。\n"; }
else { echo "未发现匹配的字符串。\n"; }
if (preg_match("/\bweb\b/i", "PHP is the website scripting language of choice."))
{ echo "查找到匹配的字符串。\n"; }
else
{ echo "未发现匹配的字符串。\n"; }
?>
执行结果如下所示:
查找到匹配的字符串。 未发现匹配的字符串。
eg two:
<?php
//模式分隔符后的"i"标记这是一个大小写不敏感的搜索
if (preg_match("/php/i", "PHP is the web scripting language of choice."))
{ echo "查找到匹配的字符串 php。"; }
else
{ echo "未发现匹配的字符串 php。"; }
?>
执行结果如下所示:
查找到匹配的字符串 php。
对象(具体)
class(类)(抽象的,用来描述对象的部分具体特征)
析构函数(function __destruct)
(this指针)
PHP伪协议
反射(reflection class; reflection object)
类
foreach(遍历)
PHP弱比较(==)
md5弱比较
三元运算符
array(新建数组)
file_put_contents
$v0 = is_numeric($v1) and is_numeric($v2) and is_numeric($v3);(=的优先级比and要高)
路径问题
php中hash比较缺陷