PHP
0x00 基本语法
基本
PHP 脚本可以放在文档中的任何位置。
PHP 脚本以
<?php
//php代码段
?>
PHP 文件的默认文件扩展名是 “.php”。
PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码。
实例
<!DOCTYPE html>
<html>
<body>
<h1>My first PHP page</h1>
<?php
echo "Hello World!";
?>
</body>
</html>
注释方式
PHP的注释方式与C语言类似,单行注释为“//”,多行注释用“/* ……….. */”
0x01 变量
PHP 变量规则:
- 变量以 $ 符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始
- 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
- 变量名不能包含空格
- 变量名是区分大小写的( Y 是两个不同的变量)
PHP 没有声明变量的命令。
变量在您第一次赋值给它的时候被创建:
<?php
$txt="Hello world!";//字符串赋值需要加上双引号
$x=5;
$y=10.5;
?>
PHP是一门弱类型语言,因此不必声明变量类型,PHP会根据需要的类型进行自动转换,这也是PHP具有多种漏洞的原因之一
变量作用域
<?php
$x=5; // 全局变量
function myTest()
{
$y=10; // 局部变量
echo "<p>测试函数内变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
}
myTest();
echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
?>
运行结果:
测试函数内变量:
变量 x 为:
变量 y 为: 10
测试函数外变量:
变量 x 为: 5
变量 y 为:
在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字,在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问,如果要跨域访问,需要在变量前加上“global”关键字,PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
static作用域
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。
要做到这一点,请在您第一次声明变量时使用 static 关键字
<?php
function myTest()
{
static $x=0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
运行结果:012
函数参数
<?php
function myTest($x)
{
echo $x;
}
myTest(5);
?>
0x02 echo与print
echo 和 print 区别:
- echo - 可以输出一个或多个字符串
- print - 只允许输出一个字符串,返回值总为 1
**提示:**echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()。
echo输出
<?php
echo "<h2>PHP 很有趣!</h2>";
echo "Hello world!<br>";
echo "我要学 PHP!<br>";
echo "这是一个", "字符串,", "使用了", "多个", "参数。";
$txt1="学习 PHP";
$txt2="RUNOOB.COM";
$cars=array("Volvo","BMW","Toyota");
echo $txt1;
echo "<br>";
echo "在 $txt2 学习 PHP ";
echo "<br>";
echo "我车的品牌是 {$cars[0]}";
?>
print输出
<?php
print "<h2>PHP 很有趣!</h2>";
print "Hello world!<br>";
print "我要学习 PHP!";
$txt1="学习 PHP";
$txt2="RUNOOB.COM";
$cars=array("Volvo","BMW","Toyota");
print $txt1;
print "<br>";
print "在 $txt2 学习 PHP ";
print "<br>";
print "我车的品牌是 {$cars[0]}";
?>
0x03 PHP EOF
EOF可以使PHP完全输出定界符内的内容,不需要添加任何转义字符,而定界符中的变量会被替换成相应的值,可以用来输出大量的代码或者进行shell的交互。
<?php
$name="456";
$a= <<<EOF
"abc"$name
"123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>
0x04 PHP数据类型
PHP5的数据类型包括:String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。
PHP字符串
<?php //单引号或者双引号都可以
$x = "Hello world!";//一个字符串是一串字符的序列
echo $x;
echo "<br>";
$x = 'Hello world!';
echo $x;
?>
PHP整型
整数规则:
- 整数必须至少有一个数字 (0-9)
- 整数不能包含逗号或空格
- 整数是没有小数点的
- 整数可以是正数或负数
- 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。
<?php
$x = 5985;
var_dump($x);//此函数可以返回变量的数据类型和值
$x = -345; // 负数
var_dump($x);
$x = 0x8C; // 十六进制数
var_dump($x);
$x = 047; // 八进制数
var_dump($x);
?>
运行结果
int(5985)
int(-345)
int(140)
int(39)
PHP浮点型
<?php
$x = 10.365;
var_dump($x);
$x = 2.4e3;
var_dump($x);
$x = 8E-5;
var_dump($x);
?>
运行结果
float(10.365)
float(2400)
float(8.0E-5)
PHP布尔类型
$x=true;
$y=false;
PHP数组
<?php
$names=array("name1","name2");
?>
PHP对象
对象数据类型也可以用于存储数据。
在 PHP 中,对象必须声明。
首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。
然后我们在类中定义数据类型,然后在实例化的类中使用数据类型:
<?php
class Car
{
var $color;
function __constuct($color="green"){
$this->color=$color;
}
function what_color(){
return $this->color;
}
}
PHP NULL
NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。
可以通过设置变量值为 NULL 来清空变量数据
<?php
$x=null;
var_dump($x);
?>
0x05 PHP常量
常量是一个简单值的标记符,常量被定义之后,其值在脚本的任何其他地方都不能改变,常量的作用域是全局
设置常量的方法:
使用define()函数来设置常量,函数语法如下:
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
函数参数说明:
- name:必选参数,常量名称,即标志符。
- value:必选参数,常量的值。
- case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。
常量作用域为全局
<?php
define("GREETING", "欢迎访问 Runoob.com");
function myTest() {
echo GREETING;
}
myTest(); // 输出 "欢迎访问 Runoob.com"
?>
PHP并置运算符
PHP只有一个字符串运算符“.”,可以将多个字符串或字符连接起来
<?php
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;
?>
PHP strlen()函数
用于返回一个字符串的长度
echo strlen("Hello world!");
PHP strpos() 函数
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
下面的实例在字符串 “Hello world!” 中查找文本 “world”:
echo strpos("Hello world!","world");
运行结果
6