PHP 语法基础.
一、php标记与注释.
1.php标记.
php是嵌入式脚本语言,它经常会和HTML内容混编在一起,因此为了区分HTML与PHP代码,需要使用标记将PHP代码包裹起来。
标记类型 | 开始标记 | 结束标记 |
---|---|---|
标准标记 | <?php | ?> |
短标记 | <? | ?> |
ASP风格标记 | <% | %> |
脚本风格标记 |
- 标记语言是PHP中最常用的标记,当一个文件是纯PHP代码时,可省略结束标记,且开始标记最好顶格写。
- 其他三种标记,在实际开发中很少使用
2.PHP注释.
>单行注释 //
>
>多行注释 /* */
二、标识符与关键字.
1.标识符.
在程序开发中,经常需要定义一些符号来标记一些名称,如变量名、常量名、函数名、类名等
规则.
- 只能由字母、数字和下划线组成
- 必须以字母或下划线开头
- 用作变量名时,区分大小写
- 若由多个单词组成,就以下划线分隔
2.关键字.
编程语言中事先定义好并赋予了特殊含义的单词,也称作保留字
and | or | xor | _FILE_ | exception |
_LINE_ | array() | As | break | case |
class | const | continue | declare | default |
die() | do | echo | else | elseif |
empty() | enddeclare | endfor | endforeach | endif |
endswitch | endwhile | eval() | exit() | extends |
for | foreach | function | global | if |
include | include_once | isset() | list() | new |
require | require_once | return | static | |
switch | unset() | use | var | while |
_FUNCTION_ | _CLASS_ | _METHOD_ | final | php_user_filter |
interface | implements | extends | public | private |
protected | abstract | clone | try | catch |
throw | this |
三、变量与常量.
1.变量.
变量就是保留可变数据的容器。
PHP中,变量由$与变量名组成,如:$online 、$_online
php是弱类型语言,所以变量不需要事先声明,就可以进行赋值使用
PHP赋值方式
- 传值赋值(默认)
- 引用赋值
引用使用时只需要在变量前添加 “ & ”符号即可,如$n = &$num
2.可变变量.
通过可变变量,可以将另一个变量的值作为该变量的名称
可变变量只需在一个变量前多加一个美元符号$
<?php
$a = 'hello';
$hello = "world";
echo $a;//hello
echo $$a;//world
?>
==注意:在当 $a 的值是数字 时,$$a会出现非法变量名的情况==
3.常量.
常量用于保存在脚本运行过程中值始终保持不变的量,它的特点是一旦被定义就不能被修改或重新定义
常量的定义方式:
- define() 函数
- const关键字
①define()函数
define('CON', 'php'); //定义名称为CON的常量,其值为php echo CON; //输出结果为:php
// 输出常量也可是下面方式 echo constant('CON'); //php
②const关键字
const PAI = 3.14; //定义名字为PAI的常量,其值为3.14 echo PAI; //输出结果为:3.14
4.预定义变量.
预定义常量是指PHP预先定义好的常量,用于获取PHP中的相关信息,方便开发。
在需要时可直接在程序中使用
echo PHP_VERSION; //用于获取PHP的版本信息
echo PHP_OS; //用于获取解析PHP的操作系统类型
四、数据结构.

1.布尔型.
true 和 false
2.整型.
八进制(oct):07
十进制(dec):9
十六进制(hex):0xF
3.浮点型.
标准格式:
$fnum = 3.14
科学计数法:
$fnum = 314E-2
// 不管采用哪种格式 浮点数的有效位都是14位
// 有效位: 从左边第一个不为0的数开始,直到末尾数的 个数,不包含小数点
4.字符串型.
- 使用单引号或双引号表示字符串
注意:变量在双引号字符串中被解析
变量在单引号字符串中原样输出
在字符串中可以使用转义字符。例如:
**双引号字符串中使用双引号时,可以使用 “ \\" ”来表示。** **单引号字符串只支持“ ' ”和“ \ ”的转义。**
在双引号字符串中输出变量时,有时会出现变量名界定不明确的问题,对于这种情况,可以使用{}来对变量进行界定。
$str = 'php'; echo "世界上最好的语言是{$str}?"; //输出结果为:世界上最好的语言是php?
五、查看数据类型.
PHP是弱类型语言,变量的数据类型会随程序的流程而改变。为了方便调试程序,PHP提供了var_dump()函数用于查看变量的值和数据类型。
<?php
$num = 1;
$fnum = 3.14;
$bool = false;
$str = 'hello world';
var_dump($num);
var_dump($fnum);
var_dump($bool);
var_dump($str);
?>
使用print_r()打印变量易于理解的信息
六、运算符.
1.算术运算符.
运算符 | 意义 | 范例 | 结果 |
---|---|---|---|
+ | 加 | 5+5 | 10 |
- | 减 | 6-4 | 2 |
* | 乘 | 3*4 | 12 |
/ | 除 | 5/5 | 1 |
% | 取模(即算术中的求余数) | 5%7 | 5 |
2.赋值运算符.
运算符 | 意义 | 范例 | 结果 |
---|---|---|---|
= | 赋值 | $a=3; $b=2; | $a=3; $b=2; |
+= | 加等于 | $a=3; $b=2; $a+=$b; | $a=5; $b=2; |
-= | 减等于 | $a=3; $b=2; $a-=$b; | $a=1; $b=2; |
*= | 乘等于 | $a=3; $b=2; $a*= $b; | $a=6; $b=2; |
/= | 除等于 | $a=3; $b=2; $a/= $b; | $a=1.5; $b=2; |
%= | 模等于 | $a=3; $b=2; $a%= $b; | $a=1; $b=2; |
.= | 连接等于 | $a=’abc’; $a .= ‘def’; | $a=’abcdef’ |
3.比较运算符.
运算符 | 运算 | 范例($x=5) | 结果 |
---|---|---|---|
== | 等于 | $x == 4 | false |
!= | 不等于 | $x != 4 | true |
<> | 不等于 | $x <> 4 | true |
=== | 恒等 | $x === 5 | true |
!== | 不恒等 | $x !== ’5’ | true |
> | 大于 | $x > 5 | false |
>= | 大于或等于 | $x >= 5 | true |
< | 小于 | $x < 5 | false |
<= | 小于或等于 | $x <= 5 | true |
- 对于两个数据类型不相同的数据进行比较时,PHP会自动将其转换成相同类型的数据后再进行比较。
- 运算符==”和“!=”运算符在比较时,只比较其值是否相等。
- 运算符“===”与“!==”在进行比较时,要比较数值和其数据类型是否相等。
4.逻辑运算符.
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
&& | 与 | $a && $b | a和b都为true,结果为true,否则为false |
|| | 或 | $a || $b | a和b中至少有一个为true,则结果为true,否则为false |
! | 非 | !$a | 若a为false,结果为true,否则相反 |
xor | 异或 | $a xor $b | a和b一个为true,一个为false,结果为true,否则为false |
and | 与 | $a and $b | 与&&相同,但优先级较低 |
or | 或 | $a or $b | 与||相同,但优先级较低 |
- && 和 ||的优先级高于 and 和 or
5.递增递减运算符.
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
++ | (前)自增 | $a=2; $b=++$a; | $a=3; $b=3; |
++ | (后)自增 | $a=2; $b=$a++; | $a=3; $b=2; |
- - | (前)自减 | $a=2; $b=–$a; | $a=1; $b=1; |
- - | (后)自减 | $a=2; $b=$a–; | $a=1; $b=2; |
七、表达式.
略.
八、运算符优先级.
结合方向 | 运算符 |
---|---|
无 | new |
左 | [ |
右 | ++ – ~ (int) (float) (string) (array) (object) @ |
无 | Instanceof |
右 | ! |
左 | * / % |
左 | + - . |
左 | << >> |
无 | == != === !== <> |
左 | & |
左 | ^ |
左 | | |
左 | && |
左 | || |
左 | ? : |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= |
左 | and |
左 | Xor |
左 | Or |
左 | , |
- 同一行的运算符具有相同的优先级
- 左结合方向表示同级运算符的执行顺序为从左到右
- 右结合方向则表示执行顺序为从右到左
- 补充:圆括号()优先级别最高
九、数据类型转换.
1.自动类型转换.
自动类型转换,指的是当运算需要或与期望的结果类型不匹配时,PHP将自动进行类型转换,无需编程人员做任何操作
4种:①转换成布尔型 ②转换成整型 ③转换成浮点型 ④转换成字符串型
/* 字符串 --> 整型 */
//比较“888php”与888是否相等
var_dump('888php' == 888); //输出结果:bool(true)
//比较“php888”与888是否相等
var_dump('php888' == 888); //输出结果:bool(false)
var_dump('php888' == 0); //输出结果:bool(true)
//这个是因为 字符串转换为 整型时 如果 字符串以数字开头,则使用 该数值 否则转换为零
2.强制类型转换.
强制类型转换,就是根据编程需求手动转换数据类型,在要转换的数据或变量之前加上“(目标类型)”即可
强制类型 | 功能描述 | 范例 | var_dump()打印结果 |
---|---|---|---|
(bool) | 强转为布尔型 | (bool)-5.9 | bool(true) |
(string) | 强转为字符串型 | (string)12 | string(2) “12” |
(integer) | 强转为整型 | (integer)’hello’ | int(0) |
(float) | 强转为浮点型 | (float)false | float(0) |
(array) | 强转为数组 | (array)’php’ | array(1) { [0]=> string(3) “php” } |
(object) | 强转为对象 | (object)2.34 | object(stdClass)#1(1){[“scalar”]=>float(2.34} |
十、流程控制语句.
1.顺序结构(略).
2.选择结构.
注意与java不同
①if 语句
②if…else…语句
三目运算符
③if…elseif…else… (其中 elseif 可存在多个; else 与 if之间没空格; else不能省略;大括号可以省略,但当有大括号时,大括号与if这些关键字之间不能有空格)
④switch语句
略
3.循环结构.
①while循环语句
②do…while循环语句
③for循环语句
流程跳转语句.
break;continue
break n; //跳出 n重循环
十一、替换语法.
当大量的HTML与PHP代码混合编译时,为了方便区分流程语句的开始和结束位置,可以使用PHP提供的替代语法进行编码。
其基本形式就是把if、while、for、foreach、switch这些语句的左花括号({)换成冒号(:),将右花括号(})分别换成“endif;”、“endwhile;”、“endfor;”、“endforeach;”和“endswitch;”。
1~99之间的偶数:
<ul>
<?php for($i=1;$i<100;++$i): ?>
<?php if($i%2 == 0): ?>
<li><?=$i;?></li>
<?php endif; ?>
<?php endfor; ?>
</ul>
“= ?>”是短标记输出语法,自 PHP 5.4起,这种语法在短标记关闭的情况下仍然可用。
因此,在HTML嵌入PHP变量使用这种简写形式将会非常方便。
十二、函数.
函数:就是程序中用来实现特定功能的代码段,避免代码的重复书写。
自定义函数:就是开发人员可根据实际功能编写的代码段。
1.自定义函数.
function 函数名( [参数1, 参数2, ……] ){
函数体
}
函数名的命名规则与标识符相同,函数名 不区分大小写,且是唯一的
(其变量是区分大小写的)
#返回值处理
return $var;
可选参数.
function test($a, $b='world'){//$b 是可选参数
return $a.$b; //拼接两个字符串
}
echo test('hello'); //输出结果:helloworld
注意:可选参数必须放在必选参数的后面
函数中变量的作用域.
通常情况下,为避免变量命名冲突,函数内的变量与函数外的变量不能互相访问
因此,变量在它的作用范围内才可以使用,这个作用范围称为变量的作用域。
其中,在函数中定义的变量称为局部变量,仅能在函数内使用,当函数执行完成后被释放;在函数外定义的变量称为全局变量,正常情况下仅可在函数外使用。
函数中使用全局变量的方法:
$var = 100; //在此处定义变量$var
$str = 'php'; //在此处定义变量$str
function test(){
//方式一:利用global关键字取得全局变量
global $var;
echo '全局变量$var:'.$var;
//方式二:利用$GLOBALS['变量名']访问
echo '全局变量$str:'.$GLOBALS['str'];
}
test();
2.可变函数.
- PHP 支持可变函数,这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。
- 值得一提的是,变量的值可以是用户自定义的函数名称,也可以是PHP内置的函数名称,但是变量的值必须是实际存在的函数的名称。
function test(){
echo 'running....';
}
$funcname = 'test'; //定义变量,其值是函数的名称
echo $funcname(); //利用可变变量调用函数
可变函数可以增加程序的灵活性,但是滥用可变函数会降低PHP代码的可读性,使程序逻辑难以理解,给代码的维护带来不便,所以在编程过程中尽量少用可变函数。
3.匿名函数.
匿名函数就是没有函数名称的函数,也称作闭包函数,经常用作回调函数参数的值。对于临时定义的函数,使用匿名函数无需考虑函数命名冲突的问题。
//匿名函数的使用
$sum = function($a, $b){ //定义匿名函数
return $a + $b;
};
echo $sum(100, 200); //输出结果:300
需要注意的是,此种匿名函数调用的方式看似与可变函数的使用类似,但实际上不是,可通过var_dump()对匿名函数的变量进行打印输出,可以看到其数据类型为对象类型
//匿名函数中使用 外部变量
$c = 100;
$sum = function($a, $b) use($c){
return $a + $b + $c;
};
echo $sum(100, 200); //输出结果:400
在匿名函数使用的外部变量需先在函数声明前进行定义
定义匿名函数时,添加use(变量名[,变量名])即可。
//匿名函数的其他用法
function calculate($a, $b, $func){
return $func($a, $b);
}
echo calculate(100, 200, function($a, $b){
return $a + $b;
}); //输出结果:300
匿名函数还可以作为函数的参数传递,实现回调函数。
极大增强了函数的灵活性。
可变与匿名.
//可变
function a(){
echo "这是函数a";
}
$b = 'a';
echo $b;//a
echo $b();//这是函数a
echo var_dump($b);//显示结果 : string(1) "a"
echo var_dump($b());//显示结果 : 这是函数aNULL
//匿名函数
$b = function(){
echo "这是匿名函数";
};//这是个语句
echo $b();//这是匿名函数
echo var_dump($b);//显示结果 object(Closure)#1 (0) {}
echo var_dump($b());//这是匿名函数NULL
十三、数组.
与java中数组不同
php的下标(键) 可以是 字符串类型
键和值之间 使用 => 连接数组
1.数组类型.
- 索引数组:下标为整型的数组
- 关联数组:下标为字符串的数组

2.定义数组.
//定义索引数组
$arr = array('one','two');
$arr = array(1=>'one',4=>'four')
//定义关联数组
$arr = array('id'=>1 , 'name'=>'lmk');
//定义空数组、混合型数组
$empty = array();
$mixed = array(1,'two',4);
$mixed = array('one'=>1,2=>'two','three') //three 的键为3
从PHP 5.4版本起,新增了定义数组的简写语法“[ ]”,使用 “[ ]”定义数组的语法与“array()”语法类似,书写更加方便。
$color = ['red','blue']
$arr = ['one'=>1,'two'=>2]
数组元素的下标只有整型和字符串两种类型,如果有其他类型,则会进行类型转换。
在PHP中合法的整数值下标会被自动的转换为整型下标。
若数组存在相同的下标时,后面的元素值会覆盖前面的元素值。
3.访问数组.
//定义数组
$info = ['id'=>1, 'name'=>'Tom'];
//方式一:通过键名访问元素
echo $info['name']; //输出结果:Tom
$var = 'id'; //也可以使用变量的值作为键名
echo $info[$var]; //输出结果:1
//方式二:通过print_r()或var_dump()
print_r($info); //输出结果:Array( [id]=> 1 [name]=> Tom )
var_dump($info); //输出结果:array(2){ ["id"]=> int(1) ["name"]=> string(3)"Tom" }
4.数组赋值.
$arr = []; //定义数组(此步骤也可以省略)
$arr[] = 'PHP'; //等价于:$arr[0] = 'PHP'
$arr[] = 'Java'; //等价于:$arr[1] = 'Java'
$arr[5] = 'C语言'; //等价于:$arr[5] = 'C语言';
$arr['sub'] = 'iOS'; //等价于:$arr['sub'] = 'iOS';
$arr[] = 'HTML'; //等价于:$arr[6] = 'HTML'
$arr[6] = 'JavaScript'; //修改数组,替换已经存在的元素
$arr = [0=>'PHP', 1=>'Java', 5=>'C语言', 'sub'=>'iOS', '6'=>'JavaScript']
5.数组删除.
unset()函数用于删除一个变量,也可以用于删除数组中的某个元素
$color=['red','blue']
//删除数组单个元素
unset($color[0]);
print_r($color)
//删除整个数组
unset($color)
print_r($color)
6、数组遍历.
foreach()语句
$color = ['red','blue'];
//遍历 key value
foreach($color as $key=>$value){
echo $key.'-'.$value.' ';
}
echo "\n";
//遍历 value
foreach($color as $value){
echo $value.' ';
}
十四、PHP内置函数.
字符串函数.
函数名 | 功能描述 |
---|---|
strlen() | 获取字符串的长度 |
strrpos() | 获取指定字符串在目标字符串中最后一次出现的位置 |
str_replace() | 用于字符串中的某些字符进行替换操作 |
substr() | 用于获取字符串中的子串 |
explode() | 使用一个字符串分割另一个字符串 |
implode() | 用指定的连接符将数组拼接成一个字符串 |
trim() | 去除字符串首尾处的空白字符(或指定成其他字符) |
str_repeat() | 重复一个字符串 |
//① 字符串分割成数组
var_dump(explode('n', 'banana'));
//输出结果:array(3){ [0]=> string(2) "ba" [1]=> string(1) "a" [2]=> string(1) "a" }
//② 分割时限制次数
var_dump(explode('n', 'banana', 2));
//输出结果:array(2){ [0]=> string(2) "ba" [1]=> string(3) "ana" }
//③ 返回除了最后2个元素外的所有元素
var_dump(explode('n', 'banana', -2));
//输出结果: array(1){ [0]=> string(2) "ba" }
数组函数.
函数名 | 功能描述 |
---|---|
count() | 用于计算数组中元素的个数 |
range() | 用于建立一个包含指定范围单元的数组 |
sort() | 对数组排序 |
rsort() | 对数组逆向排序 |
ksort() | 对数组按照键名排序 |
krsort() | 对数组按照键名逆向排序 |
array_search() | 在数组中搜索给定的值 |
array_unique() | 移除数组中重复的值 |
array_column() | 返回数组中指定的一列 |
array_keys() | 返回数组中的键名 |
array_merge() | 用于合并一个或多个数组 |
array_chunk() | 可以将一个数组分割成多个 |
asort() | 对数组进行排序并保持索引关系 |
arsort() | 对数组进行逆向排序并保持索引关系 |
shuffle() | 打乱数组顺序 |
array_reverse() | 返回一个单元顺序相反的数组 |
array_rand () | 从数组中随机取出一个或多个单元 |
key() | 从关联数组中取得键名 |
in_array() | 检查数组中是否存在某个值 |
array_values () | 返回数组中所有的值 |
数学函数.
函数名 | 功能描述 |
---|---|
abs() | 绝对值 |
ceil() | 向上取最接近的整数 |
floor() | 向下取最接近的整数 |
fmod() | 返回除法的浮点数余数 |
is_nan() | 判断是否为合法数值 |
max() | 返回最大值 |
min() | 返回最小值 |
pi() | 返回圆周率的值 |
pow() | 返回x的y次方 |
sqrt() | 平方根 |
round() | 对浮点数进行四舍五入 |
rand() | 返回随机整数 |
日期函数.
Unix时间戳是一种时间表示方式,定义了从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。其中,1970年01月01日零点也叫作Unix纪元。
函数名 | 功能描述 |
---|---|
time() | 返回当前的 Unix 时间戳 |
date() | 格式化一个本地时间/日期 |
mktime() | 取得一个日期的 Unix 时间戳 |
strtotime() | 将字符串转化成Unix时间戳 |
microtime() | 返回当前 Unix 时间戳和微秒数 |
date()函数第1个参数表示格式化日期时间的样式
date()函数第2个参数表示待格式化的时间戳,省略时表示格式化当前时间戳。
Y | 4位数字表示的完整年份,如1998、2015 |
---|---|
m | 数字表示的月份,有前导零,返回值01~12 |
d | 月份中的第几天,有前导零,返回值01~31 |
H | 小时,24小时格式,有前导零,返回值00~23 |
i | 有前导零的分钟数,返回值00~59 |
s | 有前导零的秒数,返回值00~59 |
十五、包含语句.
可以从另一个文件中将代码包含进来。使用包含语句不仅可以提高代码的重用性,还可以提高代码的维护和更新的效率。
PHP提供的包含语句
- Include
- Require
- Include_once
- require_once
Include语句(其他语句语法类似).
//第一种写法
include '文件路径';
//第二种写法
include('文件路径');
require语句与include语句的异同点:
- 相同点:
- require语句与include语句的功能类似,都可以用于包含文件。
- 不同点:
- 在包含文件时,如果没有找到文件,include语句会发生警告信息,程序继续运行。
- 在包含文件时,如果没有找到文件, require语句会发生致命错误,程序停止运行。
带_once与不带_once语句的区别:
- include_once、require_once语句,与include、require的作用几乎相同
- 带_once的语句会先检查要包含的文件是否已经被包含过,避免了同一文件被重复的包含。
Web交互.
1.get传参.
在使用PHP函数时,一个函数可以接收多个参数。同理,PHP脚本文件也可以接收参数,其传递参数的方式是通过URL地址实现的。
http://www.bxg.com/test.php?name=Tom&age=12
文件名test.php后面从“?”开始的部分就是传递的GET参数
name和age是参数的名称
Tom和12是相应的参数值
多个参数之间使用“&”进行分隔。
2.Web表单.
在实现浏览器向服务器发送数据时,除了用URL传递参数,还可以使用Web表单来实现。
在表单中的提交方式中,“method=post”表示表单以POST方式提交,当省略“method”属性时默认以GET方式提交。
相比GET方式,POST方式提交的数据是不可见的,在交互时相对安全,因此通常情况下使用POST方式提交表单数据。
表单:略(HTML5的内容)
3.获取外部数据.
当PHP收到来自浏览器的外部数据后,会自动保存到超全局变量数组中。超全局变量是PHP中预定义好的变量,可以在PHP脚本的任何位置使用。
常见的超全局变量有“$_GET、$_POST”等,通过GET方式提交的数据会保存到$_GET数组中,通过POST方式提交的数据会保存到$_POST数组中。
$_GET和$_POST的使用完全相同,接下来以$_POST为例进行详细讲解。
查看来自表单提交的数据.
$_POST实际上就是一个数组,其用法和普通数组没有区别。
//输出所有的元素
var_dump($_POST);
//输出指定元素
echo $_POST['name'];
判断表单数据是否存在.
用户通过POST方式进行表单提交时,若没有添加任何数据,则$_POST中就没有相应的数组元素。因此在取出数组元素之前,应该先判断数组中是否有这个元素
//获取$_POST中的name元素,没有时默认为空字符串
$name = isset($_POST['name']) ? $_POST['name'] : '';
isset()用于判断变量或数组元素是否存在
存在时返回true
不存在时返回false
判断数据是否为空.
empty()
if(empty($_POST['name'])){
//没有收到name,或name的值为空
}
用empty()函数判断数组元素是否为空,为空时返回true,元素不存在时也返回true。
过滤外部数据.
在开发 PHP 程序时,为了便于调试,会将用户输入的内容直接显示到网页中。但是当网站上线时,如果不对用户的输入进行任何过滤,会带来安全风险。
<div>
用户名: <div><?php echo $_POST['username']; ?></div>
来访时间: <div>2015-03-18</div>
</div>
上述代码将一个来自 POST 方式提交的 username 字段直接输出到网页中。
如果用户输入“</div>”,那么网页结构会遭到破坏。
如果用户输入<script>标记和 JavaScript 代码,那么这些代码也会被浏览器执行,从而威胁到网站的安全。
nl2br()函数
nl2br()函数可以将字符串中的“\n”转换成HTML换行符。
echo nl2br("12\n34", false); //输出结果:12<br>34 nl2br()函数的第二个参数用于设置使用XHTML兼容换行符,默认值为true。 当第二个参数设置为false时,会将字符串中的“\n”转换成<br>,否则转换为<br/>。
trim()函数
trim()函数可以去除字符串左右两端的空白字符,包括空格、换行和制表符等。
intval()函数
intval()函数可以将字符串转换为整型。
echo intval('123abc'); //输出结果:123 echo intval(' 123abc'); //输出结果:123 echo intval('abc123'); //输出结果:0
strip_tags()函数
strip_tags()函数可以去除字符串中的“< >”标签。
echo strip_tags('<b>测试</b>'); //输出结果:“测试”
htmlspecialchars函数
htmlspecialchars()函数可以将字符串中的 HTML 特殊字符转换为 HTML 实体字符,从而防止被浏览器解析。
echo htmlspecialchars('<测试>'); //输出结果:“<测试>” echo htmlspecialchars('<b>测试</b>'); //输出结果:“<b>测试</b>”
GET传参处理.
在通过URL地址传递参数时,特殊字符在URL中直接书写可能会出现问题。
例如,“&”符号已经被作为参数分隔符,如果参数值中也出现该符号,就会被误识别为分隔符。
因此,当通过PHP输出一段带有GET参数的URL地址时,最好使用urlencode()函数对GET参数进行编码
$name = 'A&B C';
$name = urlencode($name); //URL编码
echo "http://www.bxg.com/test.php?name=$name";
http://www.bxg.com/test.php?name=A%26B+C
在通过$_GET接收参数时,获得的数据已经是URL解码后的结果,无需手动进行URL解码。