代码基础
HTML基础
HTML结构
<!DOCTYPE html>
<!-- 声明为 HTML5 文档 -->
<html>
<!-- 元素是 HTML 页面的根元素 -->
<!-- 元素包含了文档的元(meta)数据 <body>元素包含了可见的页面内容。 -->
<head>
<h3>Huixin</h3>
<!-- 网页头部内容 -->
</head>
<body>
<!-- 网页正文内容 -->
</body>
</html>
HTML标签
HTML标签是由一对尖括号<>及标签名组成的,分为单标签和双标签。单标签是由一个标签组成,如
、
、
、
。双标签由“开始标签”和“结束标签”两部分构成,如、、
、<body>、<table>、<tr>、<td>、<span>。</p>
<ol>
<li><strong><meta>标签</strong></li>
</ol>
<p>用来描述一个HTML网页文档的属性,必须位于head元素内部。</p>
<pre><code class="language-html"><meta name="description" content="网页描述">
<meta http-equiv="content-type" content="text/HTML;charset=utf-8">
</code></pre>
<ol start="2">
<li><strong><link>标签</strong></li>
</ol>
<p>用于定义文档与外部资源的关系。</p>
<pre><code class="language-html"><link rel="stylesheet" type="text/css" href="/view/1.css">
</code></pre>
<ol start="3">
<li><strong><script>标签</strong></li>
</ol>
<p>用于定义客户端脚本,必须的type属性规定脚本的MIME类型。</p>
<pre><code class="language-html"><script type="text/javascrpit">JS代码;</script>
</code></pre>
<ol start="4">
<li><strong>标题标签</strong></li>
</ol>
<p>h1、h2、h3、h4、h5、h6,字体大小依次减小。</p>
<pre><code class="language-html"><h1>huixin</h1>
</code></pre>
<ol start="5">
<li><strong>段落标签</strong></li>
</ol>
<p>p标签主要用来设置文本段落</p>
<pre><code class="language-html"><p>课程简介~</p>
</code></pre>
<ol start="6">
<li><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>a标签</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></li>
</ol>
<p>a标签用来设置超链接</p>
<pre><code class="language-html"><a href="www.xxx.com" title="屠龙宝刀点击就送">屠龙宝刀</a>
<!-- 注意,还可以通过target属性设置是否以新标签页打开(_self/_blank) -->
</code></pre>
<ol start="7">
<li><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>图片标签</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></li>
</ol>
<p>img标签主要用来设置图片;alt表示当图片路径出错时,alt文字提示就会显现出来;title用于图片的描述,鼠标放在图片上描述图片的文字就会显示出来。</p>
<pre><code class="language-html"><img src="www.xxx.com/media/banner/2022-11-22/123345.jpg" alt="图片链接已失效" title="图1">
</code></pre>
<ol start="8">
<li><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>内联框架标签</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></li>
</ol>
<p>内联框架是在一个页面中嵌入另一个页面</p>
<pre><code class="language-html"><iframe sec="www.xxx.com" frameborder="1" width="700" height="340"></iframe>
</code></pre>
<ol start="9">
<li><strong>表格标签</strong></li>
</ol>
<p>table标签主要用来设置任何文本转换成表格</p>
<pre><code class="language-html"><table>表格</table>、<tr>行标签</tr>、<td>单元格</td>
</code></pre>
<ol start="10">
<li><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>表单标签</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></li>
</ol>
<p>input、textarea、select三个输入框和文本框可提供前端对文本进行编辑</p>
<pre><code class="language-html">输入标签:<input>、<textarea>、<select>下拉标签</select>
<input>标签通过定义type属性实现不同的表单类型,如:
文本域(text)、密码(password)、单选按钮(radio)、复选框(checkbox)、提交(submit)等
</code></pre>
<h3 id="html属性">HTML属性</h3>
<p>HTML属性包含了元素的额外信息,出现在HTML开始标签中,另外属性值被包括在引号内,如(” 、 ‘)。</p>
<ol>
<li>通用属性:class、style、id、title等通用属性</li>
<li>标签属性:align、bgcolor、border、src等独有属性</li>
<li>事件属性:onload、onerrer、onclick等</li>
</ol>
<h3 id="html表单">HTML表单</h3>
<pre><code class="language-html"><center>
<form>
<table align="center">
<tr>
<td>name:</td>
<td><input type="text" name="单行文本框"></td>
</tr>
<tr>
<td>password:</td>
<td><input type="password" name="密码框"></td>
</tr>
<tr>
<td>多行文本框:</td>
<td><textarea name="多行文本框" id="" cols="30" rows="10"></textarea></td>
</tr>
<tr>
<td>单选框:</td>
<td><input type="radio" name="1" value="单选1" checked>1
<input type="radio" name="2" value="单选2">2</td>
</tr>
<tr>
<td>复选框:</td>
<td><input type="checkbox" name="复选框">1</td>
</tr>
<tr>
<td> </td>
<td><input type="checkbox" name="复选框">2</td>
</tr>
<tr>
<td> </td>
<td><input type="checkbox" name="复选框">3</td>
</tr>
<tr>
<td>下拉列表:</td>
<td><select name="select" id="">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select></td>
</tr>
<tr>
<td>上传附件:</td>
<td><input type="file" name="浏览">未选择任何附件</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="submit">
<input type="submit" name="reset" value="reset">
</td>
</tr>
</table>
</form>
</center>
</code></pre>
<p>代码演示效果如图。</p>
<p><img src="https://gitee.com/mightyz/huixin/raw/master/1-2022-11-2208:58:43.png" alt="https://gitee.com/mightyz/huixin/raw/master/1-2022-11-2208:58:43.png" loading="lazy"></p>
<h3 id="dom">DOM</h3>
<p>文档对象模型(Document Object Model,简称Dom),是W3C组织推荐的处理可扩展置标语言的标准变成接口。HTML DOM定义了访问和操作HTML文档的标准方法。</p>
<p>DOM将HTML文档表达为树结构。</p>
<p><img src="https://gitee.com/mightyz/huixin/raw/master/1-2022-11-2209:01:00.png" alt="https://gitee.com/mightyz/huixin/raw/master/1-2022-11-2209:01:00.png" loading="lazy"></p>
<p>通过HTML DOM,树结构中所有节点均可通过JavaScript进行访问。所有HTML元素(节点)均可被修改,也可以创建或者删除节点。</p>
<h2 id="php基础">PHP基础</h2>
<h3 id="php基本语法">PHP基本语法</h3>
<p>PHP脚本以<code><?php</code>开头,以<code>?></code>结尾。</p>
<p>PHP有三种注释方式,分别是脚本注释、单行注释和多行注释。</p>
<p>PHP变量以$符号开头,其后是变量的名称。变量名称必须以字母或下划线开头,并且只能包含字母、数字和下划线。</p>
<p>在PHP中、有两种基本的输出方法:echo和print。echo可以输出一个或多个字符串,无返回值;print只能输出字符串,返回值为“1”。还有var_dump()函数能显示关于一个或多个表达式的结构信息,包括表达式的类型与值,代码如下</p>
<pre><code class="language-php"><?php
//php代码
# 脚本注释
//多行注释
/*多行注释*/
$a = "hui";
$b = "xin";
$c = $a.$b;
echo $a."<br>";//输出hui
print $c."<br>";//输出huixin
var_dump($a); //输出变量的数据类型和值
?>
</code></pre>
<h3 id="运算符">运算符</h3>
<p>运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。</p>
<ol>
<li><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>三元运算符</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></li>
</ol>
<p>格式:表达式1?表达式2:表达式3</p>
<p>含义:如果表达式1为真,执行表达式2;如果表达式1为家,则执行表达四3.</p>
<ol start="2">
<li><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>字符串运算符</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></li>
</ol>
<p>这个起连接作用,用“;”链接,代码如下所示。</p>
<pre><code class="language-php">$a="abc";$b="def";echo $a.$b;
</code></pre>
<p>结果如下。</p>
<pre><code class="language-php">abcdef
</code></pre>
<p>不仅可以链接字符串,如果是数字,也能当作字符串去连接。</p>
<ol start="3">
<li><strong>类型运算符</strong></li>
</ol>
<p>instanceof用于确定一个PHP变量是否属于某一类(class)的实例</p>
<pre><code class="language-php">class A{}
class B{} //定义两个类,分别为A和B
$a = new A; //初始化A类
var_dump($a instanceof A); //打印显示
var_dump($a instanceof B);
输出结果:
bool(true)
bool(false)
说明$a属于A类
</code></pre>
<ol start="4">
<li><strong>运算符优先级</strong></li>
</ol>
<p>运算符优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低优先级。表达式的结合次序取决于表达式种各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符优先级相同</p>
<pre><code class="language-php">clone new clone 和 new
[ array()
** 算术运算符
++ -- ~ (int) (float) (string) (array) (object) (bool) @ 类型和递增/递减
instanceof 类型
! 逻辑运算符
* / % 算术运算符
+ - . 算术运算符和字符串运算符
<< >>位运算符
< <= > >= 比较运算符
& 位运算符和引用
^ 位运算符
| 位运算符
&& 逻辑运算符
|| 逻辑运算符
?? 比较运算符
? : ternary
+ += -= *= **= /= .= %= &= |= ^= <<= >>= 赋值运算符
and 逻辑运算符
xor 逻辑运算符
or 逻辑运算符
</code></pre>
<h3 id="和的区别"><mark>和</mark>=的区别</h3>
<p><mark>比较两个变量的值,不比较数据类型;</mark>=比较两个变量的值和类型。</p>
<pre><code class="language-php"><?php
$password="********"; //定义一个变量
if(isset($_POST['password'])) {
//输入变量值
if(strcmp($_POST['password'],$password) == 0 ){
//比较传来的值和定义变量的值,如果判断成功为真,否则执行else语句
echo "Right!!!login success";
exit();
}else{
echo "Wrong password..";
}
}
?>
</code></pre>
<h3 id="超全局变量">超全局变量</h3>
<p>超全局变量是在全部作用域中始终可用的内置变量。在函数或方法中无需执行global $variable;就可以访问他们。</p>
<p>这些超全局变量如下。</p>
<ul>
<li>$GLOBALS:包含了全部变量的全局组合数组。变量的名字就是数组的键。</li>
<li>$_SERVER:包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等信息的数组。这个数组中的项目由Web服务器创建。</li>
<li>$_GET:通过URL参数传递给当前脚本的变量的数组。</li>
<li>$_POST:当HTTP POST请求的Content-Type是application/x-www-form-urlencoded或multipart/form-data时,会将变量以关联数组形式传入当前脚本。</li>
<li>$_REQUEST:默认情况下报案了$_GET、$_POST和$_COOKIE的数组。</li>
<li>$_COOKIE:通过HTTP Cookies方式传递给当前脚本的变量的数组。</li>
<li>$_SESSION:当前脚本可用SESSION变量的书。</li>
<li>$_FILES:通过HTTP POST方式上传到当前脚本的项目的数组。</li>
<li>$_ENV:通过环境方式传递给当前脚本的变量的数组。</li>
</ul>
<h3 id="魔法常量和魔术方法">魔法常量和魔术方法</h3>
<ol>
<li><strong>魔术常量</strong></li>
</ol>
<p>魔术常量是PHP向他运行的任何脚本提供的大量的预定义常量。魔术常量其实不是常量,可以理解为特殊的常量,以下介绍的5个魔术常量随位置而改变。</p>
<pre><code class="language-php">_LINE_:表示文件中的当前行号。不区分大小写。
_FILE_:表示文件完整的路径和命名。不区分大小写。
_FUNCTION_:表示函数名称。区分大小写。
_CLASS_:表示类的名称。区分大小写。
_METHOD_:表示类的方法的名称。区分大小写。
</code></pre>
<ol start="2">
<li><strong>魔术方法</strong></li>
</ol>
<pre><code class="language-php">_construct():构造方法,当一个对象实例化时自动调用。
_destruct():析构方法,当对象被销毁之前系统自动调用。用于释放对象所占用的额外的资源,而不是对象本身。
有三种销毁对象的方法,具体如下
(1)脚本执行完毕后,自动销毁
(2)改变对象变量的值,自动销毁
(3)使用unset函数销毁对象。
_clone():克隆一个对象时自动调用。
_autoload():使用尚未被定义的类时自动调用。
_sleep():串行化的时候调用。
_wakeup():反串行化的时候调用。
_tostring():把一个对象转换成字符串来用时自动调用该方法。
_invoke():把对象当一个方法来用时就会自动调用该方法。
_set():为不可访问的苏醒设置时就会自动调用该方法。
_get():获得不可访问的属性的值。
_unset():删除不可访问的属性。
_isset():判断不可访问的属性是否存在。
_call():当调用一个不可访问的对象方法时自动调用该方法。
_callstatic():调用一个不可访问的类方法。
</code></pre>
<h3 id="正则表达式">正则表达式</h3>
<ol>
<li><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>正则匹配原则</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></li>
</ol>
<p>最左原则:正则表达式总是从目标字符串的最左侧开始,依次匹配,直到表达式结束。</p>
<p>最长原则:对于已匹配到的目标字符串,正则表达式总是会匹配到符合正则匹配要求的最长部分,即贪婪模式。</p>
<p>常见的修正模式如下。</p>
<pre><code>U 懒惰匹配
i 不区分英文大小写
x 忽略正则表达式的空白符
s 让元字符"."匹配包括\n的所有字符
</code></pre>
<ol start="2">
<li>
<p><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>正则表达式组成</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></p>
<ol>
<li>
<p>定界符</p>
<p>/$%^@</p>
<p>使用方法:定界符+正则表达式+定界符</p>
<p>Eg:/hui.*/</p>
</li>
<li>
<p>原子</p>
<p>可见原子:Unicode编码表中用键盘输出后肉眼可见的字符,比如标点符号、英文字母、汉字、数理化公式以及其他字符。</p>
<p>不可见原子:Unicode编码表中用键盘输出后肉眼不可见的字符,比如换行符、回车符、制表符、空格以及不可见字符。</p>
</li>
<li>
<p>元字符</p>
<p>. :匹配除\n以外的所有字符。</p>
<p>| :匹配两个或多个分支选择。</p>
<p>[]:匹配方括号中的任意一个原子。</p>
<p>[^]:匹配除方括号中的原子之外的任意字符。</p>
<p>\w:匹配任意一个字(0-9 a-z A-Z)。</p>
<p>\W:匹配任意一个非数字字母下划线。</p>
<p>\d:匹配任意一个数字(0-9)。</p>
<p>\D:匹配任意一个非数字。</p>
<p>\s:匹配任意一个空白字符。</p>
<p>\S:匹配任意一个非空字符。</p>
</li>
<li>
<p>量词</p>
<p>*:可以匹配0次、任意次前面的字符。</p>
<p>+:可以匹配1次、任意次前面的字符。</p>
<p>?:前面的字符可选</p>
<p>{m}:有且只能出现m次</p>
<p>{n,m}:可以出现n到m次</p>
<p>{n}:至少n次</p>
</li>
<li>
<p>边界控制</p>
<p><sup>:匹配以</sup>之后的字符开始。</p>
<p>$:匹配以$之前的字符结尾。</p>
<p>\b:匹配一个单词边界,必须在最前或最后。</p>
<p>\B:匹配非单词边界,不能在最前或最后。</p>
<p>():匹配()中的整体为一个原子。</p>
</li>
</ol>
</li>
<li>
<p><strong>常用正则函数</strong></p>
</li>
</ol>
<p>搜索subject在pattern给的正则表达式的匹配,返回匹配次数为0或者1,存在arr数组中。</p>
<pre><code>Preg_math($pattern,$subject,$arr)
</code></pre>
<p><code>Preg_math_all($mattern,$str,$arr)</code>:进行全局正则表达式的匹配,可多次匹配,返回共计匹配的次数存到arr数组。</p>
<p><code>Preg_gerp()</code> :返回匹配模式的数组条目</p>
<p><code>Preg_replace()</code> :执行正则表达式的搜索和替换。</p>
<p><code>Preg_split()</code> :通过一个正则表达式分隔字符串。</p>
<p><code>Preg_filter()</code>:执行一个正则表达式搜索和替换。返回一个数组</p>
<h3 id="php危险函数">PHP危险函数</h3>
<ol>
<li>eval()</li>
</ol>
<p>功能描述:把字符串作为PHP代码执行。</p>
<p>危险等级:高</p>
<ol start="2">
<li>passthru()</li>
</ol>
<p>功能描述:允许执行一个外部程序并回显输出,类似于exec()</p>
<p>危险等级:高</p>
<ol start="3">
<li>exec()</li>
</ol>
<p>功能描述:允许执行一个外部程序(如UNIX Shell或CMD命令等)。</p>
<p>危险等级:高</p>
<ol start="4">
<li>assert()</li>
</ol>
<p>功能描述:如果按照默认值,在层序的运行过程中调用assert()来进行判断表达式,遇到false时程序也会继续执行,跟eval()类似。不过eval($code_str)只是符合PHP编码规范的$code_str。</p>
<p>assert的用法却更详细一些。</p>
<p>危险等级:高</p>
<ol start="5">
<li>system()</li>
</ol>
<p>功能描述:允许执行一个外部程序并回显输出,类似于passthru()</p>
<p>危险等级:高</p>
<ol start="6">
<li>shell_exec()</li>
</ol>
<p>功能描述:通过shell执行命令,并将执行结果作为字符串返回</p>
<p>危险等级:高</p>
<ol start="7">
<li>proc_open()</li>
</ol>
<p>功能描述:执行一个命令并打开文件指针用于读取及写入。</p>
<p>危险等级:高。</p>
<h2 id="php基础面向对象">PHP基础(面向对象)</h2>
<pre><code class="language-php"><?php
//创建一个对象
class cat {
public $name;
public $age;
public $color;
}
//创建一个猫
$cat1 = new cat;
$cat1->name = "小狗";
$cat1->age = 3;
$cat1->color = "white";
//再创建一个猫
$cat2 = new cat;
$cat2->name = "小猪";
$cat2->age = 4;
$cat2->color = "black";
//输出两只猫的信息
if($cat1->name = "小狗"){
echo $cat1->name."||".$cat1->age."||".$cat1->color."##";
}if($cat2->name = "小猪"){
echo $cat2->name."||".$cat2->age."||".$cat2->color."##";
}
?>
</code></pre>
<p>类是抽象的,代表一类事物。对象是具体的,是类的一个具体实例。类的基本格式如下:</p>
<pre><code class="language-php">class 类名{
成员属性(变量);
}
</code></pre>
<p>创建对象的格式如下:</p>
<pre><code class="language-php">$对象名 = new 类名();
$对象名 = new 类名;
//对象如何访问(使用)对象的属性?
$对象名->属性名;
</code></pre>
<h3 id="对象在内存中的存在形式">对象在内存中的存在形式</h3>
<pre><code class="language-php"><?php
class Person{
//定义person类
public $name;
public $age;
}
$p1 = new Person(); //实例化Person类
$p1->name = "小明"; //指向变量name
$p1->age = 18;
$p2 = $p1; //赋值操作,把name变量赋值给p2
echo $p1->name;
echo $p2->age;
?>
</code></pre>
<p><img src="https://gitee.com/mightyz/huixin/raw/master/1-2022-11-2315:42:50.png" alt="https://gitee.com/mightyz/huixin/raw/master/1-2022-11-2315:42:50.png" loading="lazy"></p>
<p>name和age两个变量通过$p1对象由栈区指向堆区。指向由地址函数接收对象,最终接收的是地址。</p>
<h3 id="构造函数">构造函数</h3>
<p>构造函数是类的一种特殊的函数,它的主要作用是完成新对象的初始化。构造函数有两个特点:第一,没有返回值;第二,在创建一个类的新对象时,系统会自动调用该类的构造函数完成对新对象的初始化。</p>
<pre><code class="language-php"><?php
class Person{
//定义person类
public $name;
public $age;
function __construct($iname, $iage){
$this->name = $iname;
$this->age = $iage;
echo "我是构造函数!";
echo "\n";
}
}
$p1 = new Person("小可爱",18); //实例化类,形成对象
echo $p1->name;
echo "\n";
echo $p1->age;
?>
//输出结果
我是构造函数!
小可爱
18
</code></pre>
<p>如果我们没有定义构造函数,系统会有一个默认的构造函数<code>function _construct(){ }</code></p>
<p>下面对类的构造方法做一个小结。</p>
<ol>
<li>在PHP4版本中,构造方法名和类名相同;PHP5版本之后可以和类名相同,也可以是_construct( )。</li>
<li>构造方法没有返回值</li>
<li>主要作用是完成对新对象的初始化,并不是创建对象本身。</li>
<li>在创建新对象后,系统自动调用该类的构造方法。</li>
<li>一个类有且只有一个构造方法。</li>
<li>如果没有给类自定义构造方法,则该类使用系统默认的构造方法。</li>
<li>如果给类自定义了构造方法,则该类的默认构造方法被覆盖。</li>
<li>构造方法的默认访问修饰符是public</li>
</ol>