【8】WEB安全学习----PHP基础语法一

目录

 

1、PHP语法结构

2、PHP注释

3、PHP变量

4、变量的特性

5、数据类型

6、字符串的特性

7、大文本字符串

8、数据类型转换-隐式转换(自动转换)

9、数据类型转换-强制转换(显示转换)

10、系统常量、自定义常量和魔术常量

11、运算符

算数运算符

字符连接符

赋值运算符

比较运算符

逻辑运算符

执行运算符

错误抑制符

三元运算符

 


1、PHP语法结构

#标准风格
<?php
    echo "hello php";
?>

#短风格,需要修改php.ini中的 hort_open_tag = On 选项,重启服务器生效
<?
    echo "hello php";
?>

#ASP风格,需要修改php.ini中的asp_tags = On 选项,重启服务器生效
<%
    echo "hello php";
%>

#长风格
<script language='php'>
    echo "hello php";
</script>

2、PHP注释

<?php
    #单行注释 shell风格
    //单行注释  C++风格
    /*
    多行注释 C风格
    */
?>

3、PHP变量

<?php
#变量的声明及赋值
$user_name = "小明";
$a=$b=$c=12; #一次声明多个变量,并且赋值相同值
?>

4、变量的特性

<?php

#PHP可变变量
$a = "b";
$b = "c";
$c = "d";
echo $$$a;   #输出"d"    $$a = #b = "c"   $$$a = $c = "d"  等量交换

#变量的赋值,不同变量分别开辟不同内存空间,互不影响
$a=1;
$b=$a;
$a=2;
echo $a,$b  #分别输出2和1

#&符号为取地址符,表示该变量指向其他变量的内存地址,2个变量共享一个内存空间,其中一个变量修改了值会影响另一个变量值
$a=1;
$b=&$a;
$a=2;
echo $a,$b  #分别输出2和2
?>

5、数据类型

<?php

#PHP数据类型分为8种主要数据类型,3种伪类型:

#标量类型:
#1、整形(包括:十进制、八进制、二进制)
$int = 1;
$int = -1;
$int = 0x123;
var_dump($int);  #var_dump()函数打印变量的详细信息  输出 int(291)

#2、浮点型
$float = 1.2;
var_dump($float); #float(1.2)
$float = 2e3; #float(2000)
var_dump($float);

#3、布尔型(True和False)
$bool = True;
var_dump($bool); #bool(true)
$bool = False;
var_dump($bool); #bool(false)

#4、字符串(单引号、双引号、HereDoc、NowDoc)
$string = "hello";
var_dump($string); #string(5) "hello"    在UTF-8中,一个中文占3个长度
$string = 'hello';
var_dump($string); #string(5) "hello" 

#复合数据类型
#5、数组
$array = array();
var_dump($array); #array(0) { }

#6、对象
$object = new stdClass();
var_dump($object); #object(stdClass)#1 (0) { }

#特殊类型
#7、资源
$handle = fopen('index.php','r');
var_dump($handle); #resource(3) of type (stream)

#8、空(未声明变量的值为NULL,声明变量并且赋值为NULL,用unset()函数注销过的变量)
$a = NULL;
$b = 1;
unset($b);

#伪类型
#1、数值型(number)
#2、混合类型(mixed)
#3、回调函数(callback)
?>

6、字符串的特性

<?php

#单引号和双引号的区别:

#1、双引号解析变量、单引号不解析变量
$name="hello php";
echo $name; #hello php
echo "$name"; #hello php
echo '$name'; #$name

#2、因为单引号不解析变量,故单引号执行效率高

#3、双引号会解析所有转义字符,单引号只能解析\\和\'两个转义字符
$string = "hello \n\t\'\" php";
echo $string; #hello \'" php
$string = 'hello \n\t\'\" php';
echo $string; #hello \n\t'\" php

#4、双引号包含单引号会解析变量,单引号包含双引号不解析变量
$str='hello';
echo "'$str'"; # 'hello'
echo '"$str"'; # "$str"

#5、使用花括号{}进行变量与字符串的连接
$str='hello';
echo "{$str}s"; # hellos
echo "${str}s"; # hellos

#6、使用花括号对字符串中的值进行增删改查
$str='hello';
echo $str{2}.'<hr>'; #查找字符 输出l
$str{2}='f'; #修改字符,只能替换一个字符,如果赋值多个字符,则会取第一个字符
echo $str.'<hr>'; # heflo
$str{9}='f'; #增加字符,没有对应的字符会用空格进行填充
echo $str.'<hr>'; #heflo f
$str{0}=''; #删除字符
echo $str.'<hr>'; #eflo f
?>

7、大文本字符串

<?php
#大文本适合php代码和hmtl、js代码混合使用的时候,不用考虑字符串单双引号的烦恼。
$name = 'hello php';
$str = <<<EOD
hello {$name}
EOD;
echo $str; #hello hello php
?>

8、数据类型转换-隐式转换(自动转换)

<?php

#一、其他类型转换为数值型:
#1、布尔类型转换成数值型 True转为1,False转换为0
echo True #1
echo 1+False #1

#2、null空类型转换数值型为0
echo 1+NULL; #1

#3、字符串类型转换为数值型,如果不是以数字开头的字符串,转换为0,如果是以数字开始的字符串,截取到非法数字结束为止
echo 1+'a'; #1
echo 1+'1'; #2
echo 1+'2a'; #3
echo 1+'2a11'; #3
echo 1+'2.1abc'; #3.1
echo 1+'2e2'; #201

#二、其他类型转换成字符串型
#1、数值类型转换为字符串类型为数值本身
echo 123; #123

#2、布尔类型转换成字符串型,True为'1',False为空字符串
echo True; #1
echo Fasle; #空字符串

#3、NULL转换成字符串型为空字符串
echo NULL; #空字符串

#三、其他类型转换为布尔型,只需记住为假的即可,其他的都为真:
#空字符串''和""、字符串'0'/"0"
#0
#0.0
#null
#空数组

?>

9、数据类型转换-强制转换(显示转换)

<?php
#临时转换,格式(数据类型)变量/值:
#(int)、(float)、(double)、(bool)、(string)、(unset)、(array)、(object)
var_dump((int)'123'); #int(123)
var_dump((float)20); #float(20)
var_dump((string)123); #string(3) "123"
var_dump((bool)1); #bool(true)


#临时转换,通过函数进行转换:intval()、floatval()、strval()、boolval()
var_dump(intval('123')); #int(123)
var_dump(floatval(123)); #float(123) 
var_dump(strval(123)); #string(3) "123"
var_dump(boolval('1')); #需要使用php5.5.0以上


#永久转换,设置变量类型:settype($var,$type),获取变量类型gettype($val)
$var =123;
echo settype($var,int); #1
var_dump($var); #int(123) 
echo settype($var,float); #1
var_dump($var); #float(123)
echo settype($var,bool); #1
var_dump($var); #bool(true)


#检测变量类型: is_数据类型($var)
$var =123;
var_dump(is_int($var)); #bool(true)
var_dump(is_float($var)); 
var_dump(is_string($var));
var_dump(is_bool($var)); 
var_dump(is_double($var)); 
var_dump(is_array($var)); 
var_dump(is_object($var));
var_dump(is_null($var));
var_dump(is_numeric($var));
?> 

10、系统常量、自定义常量和魔术常量

<?php

#一、系统常量,PHP内置好的常量,直接调用即可
echo PHP_VERSION; #PHP版本  5.4.45
echo PHP_OS; #操作系统类型  WINNT
echo M_PI; #3.1415926535898

#二、自定义常量 define($name,$value,[是否不区分大小写])
define('PI','3.1415'); #常量名最好全部大写
define('MY_AGE',20);
echo PI; #3.1415
echo MY_AGE; #20
echo my_age; #Notice: Use of undefined constant my_age  
define('AGE',22,True); #设置为True,不区分
echo AGE; #22
echo age; #22

#通过constant()函数获取常量值
echo constant('AGE'); #22

#通过defined()函数检测常量是否被定义
var_dump(defined('AGE')); #bool(true)
var_dump(defined('my')); #bool(false)

#结合以上进行常量判断定义与取值
$name='NAME';
$value='zhangshan';
if(!defined($name)){
    echo "常量未被定义";
    define($name,$value);
    echo $name; #输出NAME  
    echo constant($name); #输出zhangsan,所以这里要用constant()函数进行获取常量值
}else {
    echo constant($name);
}


#在PHP5.3后可以使用const进行定义常量  const 常量名=值
const ROOT='root';
echo ROOT; #root
echo constant('ROOT'); #root

#通过get_defined_constants()函数得到已定义的所有常量
print_r(get_defined_constants());
/*
Array
(
    [E_ERROR] => 1
    [E_RECOVERABLE_ERROR] => 4096
    [E_WARNING] => 2
    [E_PARSE] => 4
    [E_NOTICE] => 8
    [E_STRICT] => 2048
    ........
*/



#三、PHP魔术常量
echo __LINE__; #文件中当前的行号    3
echo __FILE__; #文件的绝对路径和文件名 D:\phpStudy\PHPTutorial\WWW\BJ\index.php
echo __DIR__; #返回文件所在目录 D:\phpStudy\PHPTutorial\WWW\BJ
__FUNCTION__; #返回函数名称    
__CLASS__; #返回类名称
__NAMESPACE__; #返回当前命名空间的名称
#等等其他
?>

11、运算符

算数运算符

<?php
    echo 1+1; #2
    echo 3-2; #1
    echo 2*2; #4
    echo 4/2; #2
    echo 5%2; #1

    #自增运算
    $int1 = 2;
    echo $int1++; #2  先执行,再加1
    echo $int1; #3
    $int1 = 2;
    echo ++$int1; #3   先加1,在执行
    echo $int1; #3

    #自减运算
    $int1 = 2;
    echo $int1--; #2
    echo $int1; #1
    $int1 = 2;
    echo --$int1; #1
    echo $int1; #1
?>

字符连接符

<?php
    #通过.符号连接2个字符串或字符串变量
    echo 'hello'.'world'; #helloworld
    echo 'hello','world'; #helloworld
    $name='php';
    echo '<hr>';
    echo 'hello'.$name; #hellophp
    echo '<hr>';
    echo 'helo',$name; #hellophp
?>

赋值运算符

<?php
    #赋值运算符包括 =、+=、-=、*=、/=、%=、.=
    $a=1;
    echo $a+=1; #2 $a=$a+1  1+1=2
    echo $a-=1; #1 $a=$a-1  2-1=1
    echo $a*=1; #1 $a=$a*1  1*1=1
    echo $a/=1; #1 $a=$a/1  1/1=1
    #.=的运用,输出2行表格
    $table='<table border="1">';
        $table.='<tr>';
            $table.='<td>a</td>';
            $table.='<td>a</td>';
        $table.='</tr>';
    $table.='</table>';
    echo $table;
?>

比较运算符

<?php
    #比较运算符包括 >、>=、<、<=、==、!=、<>、===、!==
    var_dump(2>1); #bool(true)
    var_dump(2<1); #bool(false)
    # ==与===区别:==只比较值是否相同,===(全等于)值和类型都要相同
    var_dump(1==1,1=='1',1==True); # bool(true) bool(true) bool(true)
    var_dump(1===1,1==='1',1===True); #bool(true) bool(false) bool(false)
?>

逻辑运算符

<?php
    #逻辑运算符包括 逻辑与(and或&&)、逻辑或(or或||)、逻辑非(!)、逻辑异或(xor)

    #逻辑与 and && 全部为真,返回真  短路的现象:第一个表达式为假,则返回假,不运算其他表达式
    var_dump(True and True); #bool(true)
    var_dump(True && False); #bool(false)

    #逻辑或 or || 只要有一个为真,返回真    短路现象:第一个表达式为真,则返回真,不运算其他表达式
    var_dump(True or True); #bool(true)
    var_dump(True || False); #bool(true)

    #逻辑非 取反
    var_dump(!True); #bool(false)

    #逻辑异或 xor 两个表达式同为True或者False,返回False
    var_dump(True xor False); #bool(true)
    var_dump(True xor True); #bool(false)

?>

执行运算符

<?php
    #执行运算符 ``反引号作为shell命令来执行,与shell_exec()作用相同
    print_r(`cd`); #D:\phpStudy\PHPTutorial\WWW\BJ
    print_r(shell_exec('cd')); #D:\phpStudy\PHPTutorial\WWW\BJ
?>

错误抑制符

<?php
    #错误抑制符@,加到错误表达式之前
    echo 4/0; #Warning: Division by zero in
    echo @(4/0); #不会显示警告信息
?>

三元运算符

<?php
    #三元运算符 exp1?exp2:exp3  exp1为真,返回exp2,否则返回exp3
    $a=3>2?'True':'False';
    echo $a; #True
    #等同于
    if(3>2){
        echo 'True';
    }else {
        echo 'False';
    }

    #三元运算符 exp1?:exp2  exp1为真,返回exp1,否则返回exp2
    $a=3>2?:'False';
    var_dump($a); #bool(true)
?>

 

猜你喜欢

转载自blog.csdn.net/a15803617402/article/details/82078407