PHP
2018-08-19 18:01:55 35 举报
AI智能生成
PHP是一种广泛使用的服务器端脚本语言,以其简单易学、功能强大而受到广大开发者的喜爱。在Web开发中,PHP可以用于生成动态网页内容,处理表单数据,与数据库进行交互等。PHP支持多种数据库系统,如MySQL、PostgreSQL等,使得开发者能够轻松地将数据存储和检索功能集成到自己的应用程序中。此外,PHP还提供了丰富的内置函数和类库,如文件操作、字符串处理、日期时间处理等,方便开发者快速实现各种功能。总之,PHP作为一种强大且灵活的编程语言,为Web开发带来了极大的便利和效率。
作者其他创作
大纲/内容
基础
基本格式
<?php
// 此处是 PHP 代码
?>
PHP注释
<?php
// 这是单行注释
# 这也是单行注释
/*
这是多行注释块
它横跨了
多行
*/
?>
户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感,但是变量对大小写敏感
PHP变量
变量以 $ 符号开头,其后是变量的名称
变量名称必须以字母或下划线开头
变量名称不能以数字开头
变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
变量域
Global变量,作用在全局,不会去干扰局部变量
Local变量,作用在函数内部
static 变量,函数删除好依旧保留
echo 和 print语句
<?php
print "<h2>PHP is fun!</h2>";
print "Hello world!<br>";
print "I'm about to learn PHP!";
?>
echo - 能够输出一个以上的字符串
print - 只能输出一个字符串,并始终返回 1
数据类型
PHP字符串
PHP整数
PHP逻辑
$x=true;
$y=false;
PHP数组
<?php
$cars=array("Volvo","BMW","SAAB");
var_dump($cars);
?>
PHP对象
PHP NULL
NULL 值标示变量是否为空。也用于区分空字符串与空值数据库
PHP字符函数
返回字符串长度
<?php
echo strlen("Hello world!");
?>
检索字符串位置
<?php
echo strpos("Hello world!","world");
?>
其它字符串函数参见:http://www.w3school.com.cn/php/php_ref_string.asp
PHP常量
define() 函数 - 它使用三个参数
首个参数定义常量的名称
第二个参数定义常量的值
可选的第三个参数规定常量名是否对大小写敏感。默认是 false。
<?php
define("GREETING", "Welcome to W3School.com.cn!");
echo GREETING;
?>
If...Else
语法
if (条件) {
条件为 true 时执行的代码;
} elseif (condition) {
条件为 true 时执行的代码;
} else {
条件为 false 时执行的代码;
}
实例
<?php
$t=date("H");
if ($t<"10") {
echo "Have a good morning!";
} elseif ($t<"20") {
echo "Have a good day!";
} else {
echo "Have a good night!";
}
?>
switch
工作原理
对表达式(通常是变量)进行一次计算
把表达式的值与结构中 case 的值进行比较
如果存在匹配,则执行与 case 关联的代码
代码执行后,break 语句阻止代码跳入下一个 case 中继续执行
如果没有 case 为真,则使用 default 语句
实例
<?php
switch ($x)
{
case 1:
echo "Number 1";
break;
case 2:
echo "Number 2";
break;
case 3:
echo "Number 3";
break;
default:
echo "No number between 1 and 3";
}
?>
循环
while循环
语法
while (条件为真) {
要执行的代码;
}
实例
<?php
$x=1;
while($x<=5) {
echo "这个数字是:$x <br>";
$x++;
}
?>
do...while
语法
do {
要执行的代码;
} while (条件为真);
实例
<?php
$x=1;
do {
echo "这个数字是:$x <br>";
$x++;
} while ($x<=5);
?>
for循环
语法
for (init counter; test counter; increment counter) {
code to be executed;
}
init counter:初始化循环计数器的值
test counter:: 评估每个循环迭代。如果值为 TRUE,继续循环。如果它的值为 FALSE,循环结束。
increment counter:增加循环计数器的值
实例
<?php
for ($x=0; $x<=10; $x++) {
echo "数字是:$x <br>";
}
?>
foreach
语法
foreach ($array as $value) {
code to be executed;
}
当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素
实例
<?php
$colors = array("red","green","blue","yellow");
foreach ($colors as $value) {
echo "$value <br>";
}
?>
进阶基础
函数
实例
<?php
function familyName($fname) {
echo "$fname Zhang.<br>";
}
familyName("Li");
familyName("Hong");
familyName("Tao");
familyName("Xiao Mei");
familyName("Jian");
?>
带入参数执行
语法
function functionName() {
被执行的代码;
}
数组
索引数组 - 带有数字索引的数组
$cars=array("Volvo","BMW","SAAB");
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="SAAB";
关联数组 - 带有指定键的数组
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
$age[&apos;Peter&apos;]="35";
$age[&apos;Ben&apos;]="37";
$age[&apos;Joe&apos;]="43";
<?php
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
foreach($age as $x=>$x_value) {
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
对关联数组进行遍历
多维数组 - 包含一个或多个数组的数组
数组函数
对数组进行升序排序 - sort()
对数组进行降序排序 - rsort()
根据键对数组进行升序排序 - ksort()
根据值对数组进行降序排序 - arsort()
超全局变量
$GLOBALS
说明:全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)
<?php
$x = 75;
$y = 25;
function addition() {
$GLOBALS[&apos;z&apos;] = $GLOBALS[&apos;x&apos;] + $GLOBALS[&apos;y&apos;];
}
addition();
echo $z;
?>
PHP $_SERVER
说明:这种超全局变量保存关于报头、路径和脚本位置的信息
<?php
echo $_SERVER[&apos;PHP_SELF&apos;];
echo "<br>"; ?>
PHP $_REQUEST
说明:用于收集 HTML 表单提交的数据
<html>
<body>
<form method="post" action="<?php echo $_SERVER[&apos;PHP_SELF&apos;];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_REQUEST[&apos;fname&apos;];
echo $name;
?>
</body>
</html>
PHP $_POST
说明:收集提交 method="post" 的 HTML 表单后的表单数据
<html>
<body>
<form method="post" action="<?php echo $_SERVER[&apos;PHP_SELF&apos;];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_POST[&apos;fname&apos;];
echo $name;
?>
</body>
</html>
PHP $_GET
说明:也可用于收集提交 HTML 表单 (method="get") 之后的表单数据。
表单
GET vs. POST
1、GET 和 POST 都创建数组(例如,array( key => value, key2 => value2, key3 => value3, ...))。此数组包含键/值对,其中的键是表单控件的名称,而值是来自用户的输入数据。
2、GET 和 POST 被视作 $_GET 和 $_POST。它们是超全局变量,这意味着对它们的访问无需考虑作用域 - 无需任何特殊代码,您能够从任何函数、类或文件访问它们。
3、$_GET 是通过 URL 参数传递到当前脚本的变量数组。
4、$_POST 是通过 HTTP POST 传递到当前脚本的变量数组。
表单验证\必填
<?php
// 定义变量并设置为空值
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "姓名是必填的";
} else {
$name = test_input($_POST["name"]);
}
if (empty($_POST["email"])) {
$emailErr = "电邮是必填的";
} else {
$email = test_input($_POST["email"]);
}
if (empty($_POST["website"])) {
$website = "";
} else {
$website = test_input($_POST["website"]);
}
if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}
if (empty($_POST["gender"])) {
$genderErr = "性别是必选的";
} else {
$gender = test_input($_POST["gender"]);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<h2>PHP 验证实例</h2>
<p><span class="error">* 必需的字段</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
姓名:<input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
电邮:<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
网址:<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
评论:<textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
性别:
<input type="radio" name="gender" value="female">女性
<input type="radio" name="gender" value="male">男性
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="提交">
</form>
<?php
echo "<h2>您的输入:</h2>";
echo $name;
echo "<br>";
echo $email;
echo "<br>";
echo $website;
echo "<br>";
echo $comment;
echo "<br>";
echo $gender;
?>
</body>
</html>
URL\E-mail验证
验证名字
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "只允许字母和空格!";
}
验证E-mail
$email = test_input($_POST["email"]);
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
$emailErr = "无效的 email 格式!";
}
验证URL
$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%
=~_|]/i",$website)) {
$websiteErr = "无效的 URL";
}
高级教程
多重数组
$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
include\require
说明:include (或 require)语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中
include &apos;filename&apos;;
<h1>欢迎访问我们的首页!</h1>
<p>一段文本。</p>
<p>一段文本。</p>
<?php include &apos;footer.php&apos;;?>
操作文件函数
readfile() 函数
说明:数读取文件,并把它写入输出缓冲
<?php
echo readfile("webdictionary.txt");
?>
文件打开读取
Open File - fopen()
读取文件 - fread()
End-Of-File - feof()
feof() 函数检查是否已到达 "end-of-file" (EOF)
关闭文件 - fclose()
读取单行文件 - fgets()
读取单字符 - fgetc()
写入文件 - fwrite()
说明:第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串
Cookie
说明:Cookie就是服务器预留在文本里面的小文件,便于下次确认用户
创建Cookie
语法:setcookie(name, value, expire, path, domain);
<?php
setcookie("user", "Alex Porter", time()+3600);
?>
取回Cookie
语法:$_COOKIE 变量用于取回 cookie 的值
删除Cookie
<?php
setcookie("user", "", time()-3600);
?>
Session
说明:Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导
<?php session_start(); ?>
错误处理
die() 函数
<?php
if(!file_exists("welcome.txt"))
{
die("File not found");
}
else
{
$file=fopen("welcome.txt","r");
}
?>
自定义错误处理器
error_function(error_level,error_message,
error_file,error_line,error_context)
异常处理
说明:用于在指定的错误发生时改变脚本的正常流程
过滤器
说明:过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入
数据库
Connect
创建连接
mysql_connect(servername,username,password);
关闭连接
mysql_close($con);
创建数据库
mysql_query("CREATE DATABASE my_db",$con)
创建表单
mysql_select_db("my_db", $con);
$sql = "CREATE TABLE Persons
(
FirstName varchar(15),
LastName varchar(15),
Age int
)";
mysql_query($sql,$con);
插入表
mysql_select_db("my_db", $con);
mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
0 条评论
下一页