PHP知识点总结(一)

基本的 PHP 语法

PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。

通过 PHP,有两种在浏览器输出文本的基础指令:echo 和 print

[php]  view plain  copy
 
  1.   
  2.   
  3.   
  4.   
  5. My first PHP page

      
  6.   
  7. echo "Hello World!";  
  8. ?>  
  9.   
  10.   
  11.   

PHP 变量

变量是用于存储数据的容器。

[php]  view plain  copy
 
  1. $x=5;  
  2. $y=6;  
  3. $z=$x+$y;  
  4. echo $z;//11  
  5. ?>   

创建(声明)PHP 变量

PHP 没有声明变量的命令。

变量在您第一次赋值给它的时候被创建:

[php]  view plain  copy
 
  1. $txt="Hello world!";  
  2. $x=5;  
  3. $y=10.5;  
  4. echo $txt;//Hello world!  
  5. ?>   

PHP 变量作用域

变量的作用域是脚本中变量可被引用/使用的部分。

PHP 有四种不同的变量作用域:

  • local
  • global
  • static
  • parameter

局部和全局作用域

在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。

在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问:

[php]  view plain  copy
 
  1.  
  2. $x=5; // 全局变量  
  3.   
  4. function myTest()  
  5. {  
  6.     $y=10; // 局部变量  
  7.     echo "

    测试函数内变量:

    ";  

  8.     echo "变量 x 为: $x";  
  9.     echo "
    "
    ;  
  10.     echo "变量 y 为: $y";  
  11. }   
  12.   
  13. myTest();  
  14.   
  15. echo "

    测试函数外变量:

    ";  

  16. echo "变量 x 为: $x";  
  17. echo "
    "
    ;  
  18. echo "变量 y 为: $y";  
  19. ?>   

在以上实例中 myTest() 函数定义了 $x 和 $y 变量。$x 变量在函数外声明,所以它是全局变量, $y 变量在函数内声明所以它是局部变量。

当我们调用myTest()函数并输出两个变量的值,函数将会输出局部变量 $y 的值,但是不能输出 $x 的值,因为 $x 变量在函数外定义,无法在函数内使用,如果要在一个函数中访问一个全局变量,需要使用 global 关键字。

然后我们在myTest()函数外输出两个变量的值,函数将会输出全局部变量 $x 的值,但是不能输出 $y 的值,因为 $y 变量在函数中定义,属于局部变量。

你可以在不同函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内。

PHP global 关键字

global 关键字用于函数内访问全局变量。

在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:

[javascript]  view plain  copy
 
  1. $x=5;  
  2. $y=10;  
  3.   
  4. function myTest()  
  5. {  
  6. global $x,$y;  
  7. $y=$x+$y;  
  8. }  
  9.   
  10. myTest();  
  11. echo $y; // 输出 15  
  12. ?>  

PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

上面的实例可以写成这样:

[php]  view plain  copy
 
  1. $x=5;  
  2. $y=10;  
  3.   
  4. function myTest()  
  5. {  
  6. $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];  
  7. }  
  8.   
  9. myTest();  
  10. echo $y;  
  11. ?>   

[php]  view plain  copy
 
  1. $x=5;  
  2. $y=10;  
  3.   
  4. function myTest()  
  5. {  
  6.     global $x,$y;  
  7.     echo $y+$x;  
  8. }  
  9. myTest();  
  10. ?>    

Static 作用域

当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。

要做到这一点,请在您第一次声明变量时使用 static 关键字:

[php]  view plain  copy
 
  1.   
  2. function myTest()  
  3. {  
  4. static $x=0;  
  5. echo $x;  
  6. $x++;  
  7. }  
  8.   
  9. myTest();  
  10. myTest();  
  11. myTest();  
  12. //输出012  
  13. ?>   

然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。

注释:该变量仍然是函数的局部变量。


参数作用域

参数是通过调用代码将值传递给函数的局部变量。

参数是在参数列表中声明的,作为函数声明的一部分:

[php]  view plain  copy
 
  1.   
  2. function myTest($x)  
  3. {  
  4. echo $x;  
  5. }  
  6.   
  7. myTest(5);  
  8.   
  9. ?>   

PHP 5 echo 和 print 语句

在 PHP 中有两个基本的输出方式: echo 和 print。

本章节中我们会详细讨论两个语句的用法,并在实例中演示如何使用 echo 和 print。

PHP echo 和 print 语句

echo 和 print 区别:

  • echo - 可以输出一个或多个字符串
  • print - 只允许输出一个字符串,返回值总为 1

提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。


PHP echo 语句

echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号:echo 或 echo()。


[php]  view plain  copy
 
  1. echo "

    PHP is fun!

    "
    ;  
  2. echo "Hello world!
    "
    ;  
  3. echo "I'm about to learn PHP!
    "
    ;  
  4. echo "This"" string"" was"" made"" with multiple parameters.";  
  5. ?>   

显示变量

[php]  view plain  copy
 
  1. $txt1="Learn PHP";  
  2. $txt2="w3cschool.cc";  
  3. $cars=array("Volvo","BMW","Toyota");  
  4.   
  5. echo $txt1;  
  6. echo "
    "
    ;  
  7. echo "Study PHP at $txt2";  
  8. echo "My car is a {$cars[0]}";  
  9. ?>   

PHP print 语句

print 同样是一个语言结构,可以使用括号,也可以不使用括号:print 或 print()。

显示字符串

[php]  view plain  copy
 
  1. print "

    PHP is fun!

    "
    ;  
  2. print "Hello world!
    "
    ;  
  3. print "I'm about to learn PHP!";  
  4. ?>   

显示变量

[php]  view plain  copy
 
  1. $txt1="Learn PHP";  
  2. $txt2="w3cschool.cc";  
  3. $cars=array("Volvo","BMW","Toyota");  
  4.   
  5. print $txt1;  
  6. print "
    "
    ;  
  7. print "Study PHP at $txt2";  
  8. print "My car is a {$cars[0]}";  
  9. ?>   


PHP 5 数据类型

String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。


PHP 字符串

一个字符串是一串字符的序列,就像 "Hello world!"。

你可以将任何文本放在单引号和双引号中:


[php]  view plain  copy
 
  1. $x = "Hello world!";  
  2. echo $x;  
  3. echo "
    "
    ;  
  4. $x = 'Hello world!';  
  5. echo $x;  
  6. ?>  

PHP 整型

整数是一个没有小数的数字。

整数规则:

  • 整数必须至少有一个数字 (0-9)
  • 整数不能包含逗号或空格
  • 整数是没有小数点的
  • 整数可以是正数或负数
  • 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。

在以下实例中我们将测试不同的数字。 PHP var_dump() 函数返回变量的数据类型和值:

[php]  view plain  copy
 
  1. $x = 5985;  
  2. var_dump($x);  
  3. echo "
    "
    ;  
  4. $x = -345; // 负数  
  5. var_dump($x);  
  6. echo "
    "
    ;  
  7. $x = 0x8C; // 十六进制数  
  8. var_dump($x);  
  9. echo "
    "
    ;  
  10. $x = 047; // 八进制数  
  11. var_dump($x);  
  12. ?>  
  13. 结果  
  14. int(5985)  
  15. int(-345)  
  16. int(140)  
  17. int(39)  

PHP 浮点型

浮点数是带小数部分的数字,或是指数形式。

在以下实例中我们将测试不同的数字。 PHP var_dump() 函数返回变量的数据类型和值:

[php]  view plain  copy
 
  1. $x = 10.365;  
  2. var_dump($x);  
  3. echo "
    "
    ;  
  4. $x = 2.4e3;  
  5. var_dump($x);  
  6. echo "
    "
    ;  
  7. $x = 8E-5;  
  8. var_dump($x);  
  9. ?>   
  10. 结果  
  11. float(10.365)  
  12. float(2400)  
  13. float(8.0E-5)  

PHP 布尔型

布尔型可以是 TRUE 或 FALSE。

[php]  view plain  copy
 
  1. $x=true;  
  2. $y=false;  
布尔型通常用于条件判断。在接下来的章节中你会学到更多关于条件控制的教程。

PHP 数组

数组可以在一个变量中存储多个值。

在以下实例中创建了一个数组,然后使用 PHP var_dump() 函数返回数组的数据类型和值:

[php]  view plain  copy
 
  1. $cars=array("Volvo","BMW","Toyota");  
  2. var_dump($cars);  
  3. ?>   
  4. 结果  
  5. array(3) {[0]=>string(5) "Volvo"[1]=>string(3) "BMW"[2]=>string(6) "Toyota"}  



PHP 对象

对象数据类型也可以用于存储数据。

在 PHP 中,对象必须声明。

首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。

然后我们在类中定义数据类型,然后在实例化的类中使用数据类型:

[php]  view plain  copy
 
  1. class Car  
  2. {  
  3.     var $color;  
  4.     function Car($color="green") {  
  5.       $this->color = $color;  
  6.     }  
  7.     function what_color() {  
  8.       return $this->color;  
  9.     }  
  10. }  
  11.   
  12. function print_vars($obj) {  
  13.    foreach (get_object_vars($objas $prop => $val) {  
  14.      echo "\t$prop = $val\n";  
  15.    }  
  16. }  
  17.   
  18. // instantiate one object  
  19. $herbie = new Car("white");  
  20.   
  21. // show herbie properties  
  22. echo "\herbie: Properties\n";  
  23. print_vars($herbie);  
  24.   
  25. ?>    

PHP关键字this就是指向当前对象实例的指针,不指向任何其他对象或类。


PHP NULL 值

NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。

NULL 值指明一个变量是否为空值。同样可用于数据空值和NULL值的区别。

可以通过设置变量值为 NULL 来清空变量数据:


[php]  view plain  copy
 
  1. $x="Hello world!";  
  2. $x=null;  
  3. var_dump($x);  
  4. ?>    

PHP 5 常量

常量值被定义后,在脚本的其他任何地方都不能被改变。

常量是一个简单值的标识符。该值在脚本中不能改变。

一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。

注意: 常量在整个脚本中都可以使用。

设置 PHP 常量

设置常量,使用 define() 函数,函数语法如下:

[php]  view plain  copy
 
  1. bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )  

该函数有三个参数:

  • name:必选参数,常量名称,即标志符。
  • value:必选参数,常量的值。
  • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。
[php]  view plain  copy
 
  1. class="prettyprint prettyprinted" style="">class="pun">class="pln">php  
  2. class="com">// 区分大小写的常量名  
  3. defineclass="pun">(class="str">"GREETING"class="pun">,class="pln"class="str">"欢迎访问 11.com"class="pun">);class="pln">  
  4. echo GREETINGclass="pun">;class="pln">    class="com">// 输出 "欢迎访问 11.com"  
  5. echo class="str">'
    '
    class="pun">;class="pln">  
  6. echo greetingclass="pun">;class="pln">   class="com">// 输出 "greeting"  
  7. class="pun">?>  
 
  不区分大小写的常量 
   
  

[php]  view plain  copy
 
  1. // 区分大小写的常量名  
  2. define("GREETING""欢迎访问 11.com",true);  
  3. echo GREETING;    // 输出 "欢迎访问 11.com"  
  4. echo '
    '
    ;  
  5. echo greeting;   //输出 "欢迎访问 11.com"  
  6. ?>  

常量是全局的

常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。

以下实例演示了在函数内使用常量,即便常量定义在函数外也可以正常使用常量。


[php]  view plain  copy
 
  1. define("GREETING""欢迎访问 11.com");  
  2.   
  3. function myTest() {  
  4.     echo GREETING;  
  5. }  
  6.    
  7. myTest();    // 输出 "欢迎访问 11.com"  
  8. ?>  


PHP 字符串变量

PHP 中的字符串变量

字符串变量用于包含有字符的值。

在创建字符串之后,我们就可以对它进行操作了。

[php]  view plain  copy
 
  1.  
  2. $txt="Hello world!";  
  3. echo $txt;  
  4. ?>   

PHP 并置运算符

在 PHP 中,只有一个字符串运算符。

并置运算符 (.) 用于把两个字符串值连接起来。

[php]  view plain  copy
 
  1.  
  2. $txt1="Hello world!";  
  3. $txt2="What a nice day!";  
  4. echo $txt1 . " " . $txt2;  
  5. ?>   
  6. 输出Hello world! What a nice day!  

PHP strlen() 函数

有时知道字符串值的长度是很有用的。

strlen() 函数返回字符串的长度(字符数)。

[php]  view plain  copy
 
  1.  
  2. echo strlen("Hello world!");  
  3. ?> //12  

PHP strpos() 函数

strpos() 函数用于在字符串内查找一个字符或一段指定的文本。

如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。

[php]  view plain  copy
 
  1.  
  2. echo strpos("Hello world!","world");  
  3. ?> //6  

PHP 运算符

在 PHP 中,赋值运算符 = 用于给变量赋值。

在 PHP 中,算术运算符 + 用于把值加在一起。

PHP 算术运算符

运算符
  名称 描述 实例 结果
x + y x 和 y 的和 2 + 2 4
x - y x 和 y 的差 5 - 2 3
x * y x 和 y 的积 5 * 2 10
x / y x 和 y 的商 15 / 5 3
x % y 模(除法的余数) x 除以 y 的余数 5 % 210 % 810 % 2 120
- x 取反 x 取反 - 2  
a . b 并置 连接两个字符串 "Hi" . "Ha" HiHa

[php]  view plain  copy
 
  1. $x=10;  
  2. $y=6;  
  3. echo ($x + $y); // 输出16  
  4. echo ($x - $y); // 输出4  
  5. echo ($x * $y); // 输出60  
  6. echo ($x / $y); // 输出1.6666666666667  
  7. echo ($x % $y); // 输出4  
  8. ?>  

PHP7+ 版本新增整除运算符  intdiv()

[php]  view plain  copy
 
  1. var_dump(intdiv(10, 3));  
  2. ?>//int(3)  

PHP 赋值运算符

在 PHP 中,基本的赋值运算符是 "="。它意味着左操作数被设置为右侧表达式的值。也就是说,"$x = 5" 的值是 5。

运算符
  等同于 描述
x = y x = y 左操作数被设置为右侧表达式的值
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x /= y x = x / y
x %= y x = x % y 模(除法的余数)
a .= b a = a . b 连接两个字符串

[php]  view plain  copy
 
  1. $x=10;  
  2. echo $x// 输出10  
  3.   
  4. $y=20;  
  5. $y += 100;  
  6. echo $y// 输出120  
  7.   
  8. $z=50;  
  9. $z -= 25;  
  10. echo $z// 输出25  
  11.   
  12. $i=5;  
  13. $i *= 6;  
  14. echo $i// 输出30  
  15.   
  16. $j=10;  
  17. $j /= 5;  
  18. echo $j// 输出2  
  19.   
  20. $k=15;  
  21. $k %= 4;  
  22. echo $k// 输出3  
  23. ?>  

[php]  view plain  copy
 
  1. $a = "Hello";  
  2. $b = $a . " world!";  
  3. echo $b// 输出Hello world!  
  4.   
  5. $x="Hello";  
  6. $x .= " world!";  
  7. echo $x// 输出Hello world!  
  8. ?>  

PHP 递增/递减运算符

运算符 名称 描述
++ x 预递增 x 加 1,然后返回 x
x ++ 后递增 返回 x,然后 x 加 1
-- x 预递减 x 减 1,然后返回 x
x -- 后递减 返回 x,然后 x 减 1

[php]  view plain  copy
 
  1. $x=10;  
  2. echo ++$x// 输出11  
  3.   
  4. $y=10;  
  5. echo $y++; // 输出10  
  6.   
  7. $z=5;  
  8. echo --$z// 输出4  
  9.   
  10. $i=5;  
  11. echo $i--; // 输出5  
  12. ?>  

PHP 比较运算符

比较操作符可以让您比较两个值:

运算符 名称 描述 实例
x == y 等于 如果 x 等于 y,则返回 true 5==8 返回 false
x === y 恒等于 如果 x 等于 y,且它们类型相同,则返回 true 5==="5" 返回 false
x != y 不等于 如果 x 不等于 y,则返回 true 5!=8 返回 true
x <> y 不等于 如果 x 不等于 y,则返回 true 5<>8 返回 true
x !== y 不恒等于 如果 x 不等于 y,或它们类型不相同,则返回 true 5!=="5" 返回 true
x > y 大于 如果 x 大于 y,则返回 true 5>8 返回 false
x < y 小于 如果 x 小于 y,则返回 true 5<8 返回 true
x >= y 大于等于 如果 x 大于或者等于 y,则返回 true 5>=8 返回 false
x <= y 小于等于 如果 x 小于或者等于 y,则返回 true 5<=8 返回 true

[php]  view plain  copy
 
  1. $x=100;  
  2. $y="100";  
  3.   
  4. var_dump($x == $y);  
  5. echo "
    "
    ;  
  6. var_dump($x === $y);  
  7. echo "
    "
    ;  
  8. var_dump($x != $y);  
  9. echo "
    "
    ;  
  10. var_dump($x !== $y);  
  11. echo "
    "
    ;  
  12.   
  13. $a=50;  
  14. $b=90;  
  15.   
  16. var_dump($a > $b);  
  17. echo "
    "
    ;  
  18. var_dump($a < $b);  
  19. ?>  
  20. 输出  
  21. bool(true)  
  22. bool(false)  
  23. bool(false)  
  24. bool(true)  
  25. bool(false)  
  26. bool(true)  

PHP 逻辑运算符

运算符 名称 描述 实例
x and y 如果 x 和 y 都为 true,则返回 true x=6y=3(x < 10 and y > 1) 返回 true
x or y 如果 x 和 y 至少有一个为 true,则返回 true x=6y=3(x==6 or y==5) 返回 true
x xor y 异或 如果 x 和 y 有且仅有一个为 true,则返回 true x=6y=3(x==6 xor y==3) 返回 false
x && y 如果 x 和 y 都为 true,则返回 true x=6y=3(x < 10 && y > 1) 返回 true
x || y 如果 x 和 y 至少有一个为 true,则返回 true x=6y=3(x==5 || y==5) 返回 false
! x 如果 x 不为 true,则返回 true x=6y=3!(x==y) 返回 true

PHP 数组运算符

运算符 名称 描述
x + y 集合 x 和 y 的集合
x == y 相等 如果 x 和 y 具有相同的键/值对,则返回 true
x === y 恒等 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true
x != y 不相等 如果 x 不等于 y,则返回 true
x <> y 不相等 如果 x 不等于 y,则返回 true
x !== y 不恒等 如果 x 不等于 y,则返回 true

[php]  view plain  copy
 
  1. $x = array("a" => "red""b" => "green");  
  2. $y = array("c" => "blue""d" => "yellow");  
  3. $z = $x + $y// $x 和 $y 数组合并  
  4. var_dump($z);  
  5. var_dump($x == $y);  
  6. var_dump($x === $y);  
  7. var_dump($x != $y);  
  8. var_dump($x <> $y);  
  9. var_dump($x !== $y);  
  10. ?>  

三元运算符

另一个条件运算符是"?:"(或三元)运算符 。

语法

[php]  view plain  copy
 
  1. (expr1) ? (expr2) : (expr3)   

对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。

自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。

判断 $_GET 请求中含有 user 值,如果有返回 $_GET['user'],否则返回 nobody:

[php]  view plain  copy
 
  1. $test = '菜鸟教程';  
  2. // 普通写法  
  3. $username = isset($test) ? $test : 'nobody';  
  4. echo $username, PHP_EOL;  
  5.   
  6. // PHP 5.3+ 版本写法  
  7. $username = $test ?: 'nobody';  
  8. echo $username, PHP_EOL;  
  9. ?>  

[php]  view plain  copy
 
  1. // 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值  
  2. $username = $_GET['user'] ?? 'nobody';  
  3. // 类似的三元运算符  
  4. $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';  
  5. ?>  

组合比较符(PHP7+)

PHP7+ 支持组合比较符

php
// 整型
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

// 浮点型
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
 
// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>


PHP If...Else 语句

[php]  view plain  copy
 
  1. $t=date("H");  
  2. if ($t<"20")  
  3. {  
  4.     echo "Have a good day!";  
  5. }  
  6. else  
  7. {  
  8.     echo "Have a good night!";  
  9. }  
  10. ?>   

[php]  view plain  copy
 
  1. $t=date("H");  
  2. if ($t<"10")  
  3. {  
  4.     echo "Have a good morning!";  
  5. }  
  6. else if ($t<"20")  
  7. {  
  8.     echo "Have a good day!";  
  9. }  
  10. else  
  11. {  
  12.     echo "Have a good night!";  
  13. }  
  14. ?>   

PHP Switch 语句

[php]  view plain  copy
 
  1. $favcolor="red";  
  2. switch ($favcolor)  
  3. {  
  4. case "red":  
  5.     echo "你喜欢的颜色是红色!";  
  6.     break;  
  7. case "blue":  
  8.     echo "你喜欢的颜色是蓝色!";  
  9.     break;  
  10. case "green":  
  11.     echo "你喜欢的颜色是绿色!";  
  12.     break;  
  13. default:  
  14.     echo "你喜欢的颜色不是 红, 蓝, 或绿色!";  
  15. }  
  16. ?>   

PHP 数组

[php]  view plain  copy
 
  1. $cars=array("Volvo","BMW","Toyota");  
  2. echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";  
  3. ?>  

在 PHP 中,有三种类型的数组:

  • 数值数组 - 带有数字 ID 键的数组
  • 关联数组 - 带有指定的键的数组,每个键关联一个值
  • 多维数组 - 包含一个或多个数组的数组

PHP 数值数组

[php]  view plain  copy
 
  1. $cars=array("Volvo","BMW","Toyota");  

获取数组的长度 - count() 函数

count() 函数用于返回数组的长度(元素的数量):

[php]  view plain  copy
 
  1. $cars=array("Volvo","BMW","Toyota");  
  2. echo count($cars);  
  3. ?>   

遍历数值数组

遍历并打印数值数组中的所有值

[php]  view plain  copy
 
  1. $cars=array("Volvo","BMW","Toyota");  
  2. $arrlength=count($cars);  
  3.   
  4. for($x=0;$x<$arrlength;$x++)  
  5. {  
  6. echo $cars[$x];  
  7. echo "
    "
    ;  
  8. }  
  9. ?>  

PHP 关联数组

关联数组是使用您分配给数组的指定的键的数组。

这里有两种创建关联数组的方法:

[php]  view plain  copy
 
  1. $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");  

or:

[php]  view plain  copy
 
  1. $age['Peter']="35";  
  2. $age['Ben']="37";  
  3. $age['Joe']="43";   

[php]  view plain  copy
 
  1. $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");  
  2. echo "Peter is " . $age['Peter'] . " years old.";  
  3. ?>   

遍历关联数组

遍历并打印关联数组中的所有值,您可以使用 foreach 循环
[php]  view plain  copy
 
  1. $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");  
  2.   
  3. foreach($age as $x=>$x_value)  
  4. {  
  5. echo "Key=" . $x . ", Value=" . $x_value;  
  6. echo "
    "
    ;  
  7. }  
  8. ?>   

PHP 数组排序

PHP - 数组排序函数

在本章中,我们将一一介绍下列 PHP 数组排序函数:

  • sort() - 对数组进行升序排列
  • rsort() - 对数组进行降序排列
  • asort() - 根据关联数组的值,对数组进行升序排列
  • ksort() - 根据关联数组的键,对数组进行升序排列
  • arsort() - 根据关联数组的值,对数组进行降序排列
  • krsort() - 根据关联数组的键,对数组进行降序排列

sort() - 对数组进行升序排列

[php]  view plain  copy
 
  1. $cars=array("Volvo","BMW","Toyota");   
  2. sort($cars);   
  3. print_r($cars);  
  4. ?>  

[php]  view plain  copy
 
  1. $numbers=array(4,6,2,22,11);   
  2. sort($numbers);   
  3. print_r($numbers);   
  4. ?>   

rsort() - 对数组进行降序排列

[php]  view plain  copy
 
  1. $cars=array("Volvo","BMW","Toyota");   
  2. rsort($cars);   
  3. print_r($cars);   
  4. ?>   

[php]  view plain  copy
 
  1. $numbers=array(4,6,2,22,11);   
  2. rsort($numbers);   
  3. print_r($numbers);   
  4. ?>   

asort() - 根据数组的值,对数组进行升序排列

[php]  view plain  copy
 
  1. $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");   
  2. asort($age);   
  3. print_r($age);   
  4. ?>  


ksort() - 根据数组的键,对数组进行升序排

[php]  view plain  copy
 
  1. $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");  
  2. ksort($age);  
  3. print_r($age);  
  4. ?>   


arsort() - 根据数组的值,对数组进行降序排列

[php]  view plain  copy
 
  1. $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");  
  2. arsort($age);  
  3. print_r($age);  
  4. ?>   

krsort() - 根据数组的键,对数组进行降序排

[php]  view plain  copy
 
  1. $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");  
  2. krsort($age);  
  3. print_r($age);  
  4. ?>   

PHP 超级全局变量

PHP 超级全局变量

PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。你不需要特别说明,就可以在函数及类中使用。

PHP 超级全局变量列表:

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

PHP $GLOBALS

$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。

$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

[php]  view plain  copy
 
  1. $x = 75;  
  2. $y = 25;  
  3.    
  4. function addition()  
  5. {  
  6. $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];  
  7. }  
  8.    
  9. addition();  
  10. echo $z;  
  11. ?>   


PHP $_SERVER

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。


[php]  view plain  copy
 
  1. echo $_SERVER['PHP_SELF'];  
  2. echo "
    "
    ;  
  3. echo $_SERVER['SERVER_NAME'];  
  4. echo "
    "
    ;  
  5. echo $_SERVER['HTTP_HOST'];  
  6. echo "
    "
    ;  
  7. echo $_SERVER['HTTP_REFERER'];  
  8. echo "
    "
    ;  
  9. echo $_SERVER['HTTP_USER_AGENT'];  
  10. echo "
    "
    ;  
  11. echo $_SERVER['SCRIPT_NAME'];  
  12. ?>   

下表列出了所有 $_SERVER 变量中的重要元素:

元素/代码 描述
$_SERVER['PHP_SELF'] 当前执行脚本的文件名,与 document root 有关。例如,在地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF'] 将得到 /test.php/foo.bar。__FILE__ 常量包含当前(例如包含)文件的完整路径和文件名。 从 PHP 4.3.0 版本开始,如果 PHP 以命令行模式运行,这个变量将包含脚本名。之前的版本该变量不可用。
$_SERVER['GATEWAY_INTERFACE'] 服务器使用的 CGI 规范的版本;例如,"CGI/1.1"。
$_SERVER['SERVER_ADDR'] 当前运行脚本所在的服务器的 IP 地址。
$_SERVER['SERVER_NAME'] 当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。(如: www.runoob.com)
$_SERVER['SERVER_SOFTWARE'] 服务器标识字符串,在响应请求时的头信息中给出。 (如:Apache/2.2.24)
$_SERVER['SERVER_PROTOCOL'] 请求页面时通信协议的名称和版本。例如,"HTTP/1.0"。
$_SERVER['REQUEST_METHOD'] 访问页面使用的请求方法;例如,"GET", "HEAD","POST","PUT"。
$_SERVER['REQUEST_TIME'] 请求开始时的时间戳。从 PHP 5.1.0 起可用。 (如:1377687496)
$_SERVER['QUERY_STRING'] query string(查询字符串),如果有的话,通过它进行页面访问。
$_SERVER['HTTP_ACCEPT'] 当前请求头中 Accept: 项的内容,如果存在的话。
$_SERVER['HTTP_ACCEPT_CHARSET'] 当前请求头中 Accept-Charset: 项的内容,如果存在的话。例如:"iso-8859-1,*,utf-8"。
$_SERVER['HTTP_HOST'] 当前请求头中 Host: 项的内容,如果存在的话。
$_SERVER['HTTP_REFERER'] 引导用户代理到当前页的前一页的地址(如果存在)。由 user agent 设置决定。并不是所有的用户代理都会设置该项,有的还提供了修改 HTTP_REFERER 的功能。简言之,该值并不可信。)
$_SERVER['HTTPS'] 如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值。
$_SERVER['REMOTE_ADDR'] 浏览当前页面的用户的 IP 地址。
$_SERVER['REMOTE_HOST'] 浏览当前页面的用户的主机名。DNS 反向解析不依赖于用户的 REMOTE_ADDR。
$_SERVER['REMOTE_PORT'] 用户机器上连接到 Web 服务器所使用的端口号。
$_SERVER['SCRIPT_FILENAME'] 当前执行脚本的绝对路径。
$_SERVER['SERVER_ADMIN'] 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。(如:[email protected])
$_SERVER['SERVER_PORT'] Web 服务器使用的端口。默认值为 "80"。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。
$_SERVER['SERVER_SIGNATURE'] 包含了服务器版本和虚拟主机名的字符串。
$_SERVER['PATH_TRANSLATED'] 当前脚本所在文件系统(非文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。
$_SERVER['SCRIPT_NAME'] 包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 常量包含当前脚本(例如包含文件)的完整路径和文件名。
$_SERVER['SCRIPT_URI'] URI 用来指定要访问的页面。例如 "/index.html"。

PHP $_REQUEST

PHP $_REQUEST 用于收集HTML表单提交的数据。

以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。当用户通过点击 "Submit" 按钮提交表单数据时, 表单数据将发送至

标签中 action 属性中指定的脚本文件。在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。然后,我们可以使用超级全局变量 $_REQUEST 来收集表单中的 input 字段数据:


[php]  view plain  copy
 
  1.   
  2.   
  3.   
  4.   
  5. "post" action="">  
  6. Name: "text" name="fname">  
  7. "submit">  
  8.   
  9.   
  10. $name = $_REQUEST['fname'];   
  11. echo $name;   
  12. ?>  
  13.   
  14.   
  15.   

PHP $_POST

PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"。

以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。当用户通过点击 "Submit" 按钮提交表单数据时, 表单数据将发送至

标签中 action 属性中指定的脚本文件。在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。然后,我们可以使用超级全局变量 $_POST 来收集表单中的 input 字段数据:

[php]  view plain  copy
 
  1.   
  2.   
  3.   
  4.   
  5. "post" action="">  
  6. Name: "text" name="fname">  
  7. "submit">  
  8.   
  9.   
  10. $name = $_POST['fname'];   
  11. echo $name;   
  12. ?>  
  13.   
  14.   
  15.   

PHP $_GET

PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。

$_GET 也可以收集URL中发送的数据。

假定我们有一个包含参数的超链接HTML页面:

当用户点击链接 "Test $GET", 参数 "subject" 和 "web" 将发送至"test_get.php",你可以在 "test_get.php" 文件中使用 $_GET 变量来获取这些数据。


[php]  view plain  copy
 
  1.   
  2.   
  3.   
  4.   
  5. "test_get.php?subject=PHP&web=111.com">测试 $_GET  
  6.   
  7.   
  8.   


PHP 循环 - While 循环

[php]  view plain  copy
 
  1. $i=1;  
  2. while($i<=5)  
  3. {  
  4. echo "The number is " . $i . "
    "
    ;  
  5. $i++;  
  6. }  
  7. ?>  
  8. 输出:

    class
    ="code notranslate">
    The number is 1  
  9. The number is 2  
  10. The number is 3  
  11. The number is 4  
  12. The number is 5
  

do...while 语句

[php]  view plain  copy
 
  1. $i=1;  
  2. do  
  3. {  
  4. $i++;  
  5. echo "The number is " . $i . "
    "
    ;  
  6. }  
  7. while ($i<=5);  
  8. ?>  
  9. 输出:

    class
    ="code notranslate">
    The number is 2  
  10. The number is 3  
  11. The number is 4  
  12. The number is 5  
  13. The number is 6
  

PHP 循环 - For 循环

[php]  view plain  copy
 
  1. for ($i=1; $i<=5; $i++)  
  2. {  
  3. echo "The number is " . $i . "
    "
    ;  
  4. }  
  5. ?>  
  6. 输出:

    class
    ="code notranslate">
    The number is 1  
  7. The number is 2  
  8. The number is 3  
  9. The number is 4  
  10. The number is 5
  

foreach 循环

foreach 循环用于遍历数组。

[php]  view plain  copy
 
  1. $x=array("one","two","three");  
  2. foreach ($x as $value)  
  3. {  
  4. echo $value . "
    "
    ;  
  5. }  
  6. ?>  


PHP 函数

[php]  view plain  copy
 
  1. function writeName()  
  2. {  
  3. echo "Kai Jim Refsnes";  
  4. }  
  5.   
  6. echo "My name is ?
    "
    ;  
  7. writeName();  
  8. ?>  
  9. 输出  
  10. "font-family:Simsun;font-size:14px;color:#000000;font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">My name is ?"color: rgb(0, 0, 0); font-family: Simsun;font-size:14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;" />"font-family:Simsun;font-size:14px;color:#000000;font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">Kai Jim Refsnes  

[php]  view plain  copy
 
  1. function writeName($fname)  
  2. {  
  3. echo $fname . " Refsnes.
    "
    ;  
  4. }  
  5.   
  6. echo "My name is ";  
  7. writeName("Kai Jim");  
  8. echo "My sister's name is ";  
  9. writeName("Hege");  
  10. echo "My brother's name is ";  
  11. writeName("Stale");  
  12. ?>  
  13. 输出:

    class
    ="code notranslate">
    My name is Kai Jim Refsnes.  
  14. My sister's name is Hege Refsnes.  
  15. My brother's name is Stale Refsnes.
  

[php]  view plain  copy
 
  1. function writeName($fname,$punctuation)  
  2. {  
  3. echo $fname . " Refsnes" . $punctuation . "
    "
    ;  
  4. }  
  5.   
  6. echo "My name is ";  
  7. writeName("Kai Jim",".");  
  8. echo "My sister's name is ";  
  9. writeName("Hege","!");  
  10. echo "My brother's name is ";  
  11. writeName("Ståle","?");  
  12. ?>  
  13. 输出:

    class
    ="code notranslate">
    My name is Kai Jim Refsnes.  
  14. My sister's name is Hege Refsnes!  
  15. My brother's name is Ståle Refsnes?
  

PHP 函数 - 返回值

[php]  view plain  copy
 
  1. function add($x,$y)  
  2. {  
  3. $total=$x+$y;  
  4. return $total;  
  5. }  
  6.   
  7. echo "1 + 16 = " . add(1,16);  
  8. ?>  
  9. 输出:

    class
    ="code notranslate">
    1 + 16 = 17
  

PHP 魔术变量

PHP 向它运行的任何脚本提供了大量的预定义常量。

不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。

__LINE__

文件中的当前行号。

[php]  view plain  copy
 
  1. echo '这是第 “ '  . __LINE__ . ' ” 行';  
  2. ?>  
  3. //这是第  2    

__FILE__

文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

[php]  view plain  copy
 
  1. echo '该文件位于 “ '  . __FILE__ . ' ” ';  
  2. ?>  
  3. //该文件位于  E:\wamp\www\test\index.php   

__DIR__

文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。

它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)

[php]  view plain  copy
 
  1. echo '该文件位于 “ '  . __DIR__ . ' ” ';  
  2. ?>  
  3. //该文件位于  E:\wamp\www\test   

_FUNCTION__

函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

[php]  view plain  copy
 
  1. function test() {  
  2.     echo  '函数名为:' . __FUNCTION__ ;  
  3. }  
  4. test();  
  5. ?>  
  6. //函数名为:test  

__CLASS__

类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。

在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。

[php]  view plain  copy
 
  1. class test {  
  2.     function _print() {  
  3.         echo '类名为:'  . __CLASS__ . "
    "
    ;  
  4.         echo  '函数名为:' . __FUNCTION__ ;  
  5.     }  
  6. }  
  7. $t = new test();  
  8. $t->_print();  
  9. ?>  
  10. //类名为:test  
  11. class="prettyprint prettyprinted" style="">class="pun">//函数名为:_print  

 
  

__TRAIT__

Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

Trait 名包括其被声明的作用区域(例如 Foo\Bar)。

从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

[php]  view plain  copy
 
  1. class Base {  
  2.     public function sayHello() {  
  3.         echo 'Hello ';  
  4.     }  
  5. }  
  6.   
  7. trait SayWorld {  
  8.     public function sayHello() {  
  9.         parent::sayHello();  
  10.         echo 'World!';  
  11.     }  
  12. }  
  13.   
  14. class MyHelloWorld extends Base {  
  15.     use SayWorld;  
  16. }  
  17.   
  18. $o = new MyHelloWorld();  
  19. $o->sayHello();  
  20. ?>  
  21. //Hello World!  

__METHOD__

类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

[php]  view plain  copy
 
  1. function test() {  
  2.     echo  '函数名为:' . __METHOD__ ;  
  3. }  
  4. test();  
  5. ?>  
  6. //函数名为:test  

__NAMESPACE__

当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

[php]  view plain  copy
 
  1. namespace MyProject;  
  2.   
  3. echo '命名空间为:"', __NAMESPACE__, '"'// 输出 "MyProject"  
  4. ?>  
  5. //命名空间为:"MyProject"  

PHP 面向对象

[php]  view plain  copy
 
  1. class Site {  
  2.   /* 成员变量 */  
  3.   var $url;  
  4.   var $title;  
  5.     
  6.   /* 成员函数 */  
  7.   function setUrl($par){  
  8.      $this->url = $par;  
  9.   }  
  10.     
  11.   function getUrl(){  
  12.      echo $this->url . PHP_EOL;  
  13.   }  
  14.     
  15.   function setTitle($par){  
  16.      $this->title = $par;  
  17.   }  
  18.     
  19.   function getTitle(){  
  20.      echo $this->title . PHP_EOL;  
  21.   }  
  22. }  
  23.   
  24. $runoob = new Site;  
  25. $taobao = new Site;  
  26. $google = new Site;  
  27.   
  28. // 调用成员函数,设置标题和URL  
  29. $runoob->setTitle( "菜鸟教程" );  
  30. $taobao->setTitle( "淘宝" );  
  31. $google->setTitle( "Google 搜索" );  
  32.   
  33. $runoob->setUrl( 'www.runoob.com' );  
  34. $taobao->setUrl( 'www.taobao.com' );  
  35. $google->setUrl( 'www.google.com' );  
  36.   
  37. // 调用成员函数,获取标题和URL  
  38. $runoob->getTitle();  
  39. $taobao->getTitle();  
  40. $google->getTitle();  
  41.   
  42. $runoob->getUrl();  
  43. $taobao->getUrl();  
  44. $google->getUrl();  
  45. ?>  

PHP 表单

PHP 表单和用户输入

PHP 中的 $_GET 和 $_POST 变量用于检索表单中的信息,比如用户输入。

PHP 表单处理

有一点很重要的事情值得注意,当处理 HTML 表单时,PHP 能把来自 HTML 页面中的表单元素自动变成可供 PHP 脚本使用。

form.html

[php]  view plain  copy
 
  1.   
  2.   
  3. "utf-8">  
  4. hjp(runoob.com)  
  5.   
  6.   
  7.   
  8. "welcome.php" method="post">  
  9. 名字: "text" name="fname">  
  10. 年龄: "text" name="age">  
  11. "submit" value="提交">  
  12.   
  13.   
  14.   
  15.   

welcome.php 文件

[php]  view plain  copy
 
  1. 欢迎 echo $_POST["fname"]; ?>!
      
  2. 你的年龄是 echo $_POST["age"]; ?>  岁。  

PHP 表单验证

[php]  view plain  copy
 
  1.     
  2.   
  3.   
  4. "utf-8">  
  5. hjp(runoob.com)  
  6.   
  7.   
  8.    
  9.   
  10. // 定义变量并默认设置为空值  
  11. $nameErr = $emailErr = $genderErr = $websiteErr = "";  
  12. $name = $email = $gender = $comment = $website = "";  
  13.   
  14. if ($_SERVER["REQUEST_METHOD"] == "POST")  
  15. {  
  16.     if (empty($_POST["name"]))  
  17.     {  
  18.         $nameErr = "名字是必需的";  
  19.     }  
  20.     else  
  21.     {  
  22.         $name = test_input($_POST["name"]);  
  23.         // 检测名字是否只包含字母跟空格  
  24.         if (!preg_match("/^[a-zA-Z ]*$/",$name))  
  25.         {  
  26.             $nameErr = "只允许字母和空格";   
  27.         }  
  28.     }  
  29.       
  30.     if (empty($_POST["email"]))  
  31.     {  
  32.       $emailErr = "邮箱是必需的";  
  33.     }  
  34.     else  
  35.     {  
  36.         $email = test_input($_POST["email"]);  
  37.         // 检测邮箱是否合法  
  38.         if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))  
  39.         {  
  40.             $emailErr = "非法邮箱格式";   
  41.         }  
  42.     }  
  43.       
  44.     if (empty($_POST["website"]))  
  45.     {  
  46.         $website = "";  
  47.     }  
  48.     else  
  49.     {  
  50.         $website = test_input($_POST["website"]);  
  51.         // 检测 URL 地址是否合法  
  52.         if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website))  
  53.         {  
  54.             $websiteErr = "非法的 URL 的地址";   
  55.         }  
  56.     }  
  57.       
  58.     if (empty($_POST["comment"]))  
  59.     {  
  60.         $comment = "";  
  61.     }  
  62.     else  
  63.     {  
  64.         $comment = test_input($_POST["comment"]);  
  65.     }  
  66.       
  67.     if (empty($_POST["gender"]))  
  68.     {  
  69.         $genderErr = "性别是必需的";  
  70.     }  
  71.     else  
  72.     {  
  73.         $gender = test_input($_POST["gender"]);  
  74.     }  
  75. }  
  76.   
  77. function test_input($data)  
  78. {  
  79.     $data = trim($data);  
  80.     $data = stripslashes($data);  
  81.     $data = htmlspecialchars($data);  
  82.     return $data;  
  83. }  
  84. ?>  
  85.   
  86. PHP 表单验证实例

      
  87. class="error">* 必需字段。

      
  88. "post" action="PHP_SELF"]);?>">   
  89.    名字: "text" name="name" value="">  
  90.    class="error">* echo $nameErr;?>  
  91.    

      
  92.    E-mail: "text" name="email" value="">  
  93.    class="error">* echo $emailErr;?>  
  94.    

      
  95.    网址: "text" name="website" value="">  
  96.    class="error">echo $websiteErr;?>  
  97.    

      
  98.    备注: "comment" rows="5" cols="40">echo $comment;?>  
  99.    

      
  100.    性别:  
  101.    "radio" name="gender" if (isset($gender) && $gender=="female"echo "checked";?>  value="female">女  
  102.    "radio" name="gender" if (isset($gender) && $gender=="male"echo "checked";?>  value="male">男  
  103.    class="error">* echo $genderErr;?>  
  104.    

      
  105.    "submit" name="submit" value="Submit">   
  106.   
  107.   
  108. echo "

    您输入的内容是:

    "
    ;  
  109. echo $name;  
  110. echo "
    "
    ;  
  111. echo $email;  
  112. echo "
    "
    ;  
  113. echo $website;  
  114. echo "
    "
    ;  
  115. echo $comment;  
  116. echo "
    "
    ;  
  117. echo $gender;  
  118. ?>  
  119.   
  120.   
  121.   

名字 必须。 +只能包含字母和空格
E-mail 必须。 + 必须是一个有效的电子邮件地址(包含'@'和'.')
网址 必须。如果存在,它必须包含一个有效的URL
备注 必须。 多行输入字段(文本域)
性别 必须。 必须选择一个

PHP 完整表单实例

[php]  view plain  copy
 
  1.     
  2.   
  3.   
  4. "utf-8">  
  5. hjp(runoob.com)  
  6.   
  7.   
  8.    
  9.   
  10. // 定义变量并默认设置为空值  
  11. $nameErr = $emailErr = $genderErr = $websiteErr = "";  
  12. $name = $email = $gender = $comment = $website = "";  
  13.   
  14. if ($_SERVER["REQUEST_METHOD"] == "POST")  
  15. {  
  16.     if (empty($_POST["name"]))  
  17.     {  
  18.         $nameErr = "名字是必需的";  
  19.     }  
  20.     else  
  21.     {  
  22.         $name = test_input($_POST["name"]);  
  23.         // 检测名字是否只包含字母跟空格  
  24.         if (!preg_match("/^[a-zA-Z ]*$/",$name))  
  25.         {  
  26.             $nameErr = "只允许字母和空格";   
  27.         }  
  28.     }  
  29.       
  30.     if (empty($_POST["email"]))  
  31.     {  
  32.       $emailErr = "邮箱是必需的";  
  33.     }  
  34.     else  
  35.     {  
  36.         $email = test_input($_POST["email"]);  
  37.         // 检测邮箱是否合法  
  38.         if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))  
  39.         {  
  40.             $emailErr = "非法邮箱格式";   
  41.         }  
  42.     }  
  43.       
  44.     if (empty($_POST["website"]))  
  45.     {  
  46.         $website = "";  
  47.     }  
  48.     else  
  49.     {  
  50.         $website = test_input($_POST["website"]);  
  51.         // 检测 URL 地址是否合法  
  52.         if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website))  
  53.         {  
  54.             $websiteErr = "非法的 URL 的地址";   
  55.         }  
  56.     }  
  57.       
  58.     if (empty($_POST["comment"]))  
  59.     {  
  60.         $comment = "";  
  61.     }  
  62.     else  
  63.     {  
  64.         $comment = test_input($_POST["comment"]);  
  65.     }  
  66.       
  67.     if (empty($_POST["gender"]))  
  68.     {  
  69.         $genderErr = "性别是必需的";  
  70.     }  
  71.     else  
  72.     {  
  73.         $gender = test_input($_POST["gender"]);  
  74.     }  
  75. }  
  76.   
  77. function test_input($data)  
  78. {  
  79.     $data = trim($data);  
  80.     $data = stripslashes($data);  
  81.     $data = htmlspecialchars($data);  
  82.     return $data;  
  83. }  
  84. ?>  
  85.   
  86. PHP 表单验证实例

      
  87. class="error">* 必需字段。

      
  88. "post" action="PHP_SELF"]);?>">   
  89.    名字: "text" name="name" value="">  
  90.    class="error">* echo $nameErr;?>  
  91.    

      
  92.    E-mail: "text" name="email" value="">  
  93.    class="error">* echo $emailErr;?>  
  94.    

      
  95.    网址: "text" name="website" value="">  
  96.    class="error">echo $websiteErr;?>  
  97.    

      
  98.    备注: "comment" rows="5" cols="40">echo $comment;?>  
  99.    

      
  100.    性别:  
  101.    "radio" name="gender" if (isset($gender) && $gender=="female"echo "checked";?>  value="female">女  
  102.    "radio" name="gender" if (isset($gender) && 

你可能感兴趣的:(PHP)