PHP基础知识

php有3种不同的变量作用域:

>local(局部)

>global(全局)

>static(静态)

函数之外声明的变量拥有global作用域,只能在函数以外访问;

函数内部声明的变量拥有local作用域,只能在函数内部进行访问;

在变量前添加global关键字可以访问函数内的全局变量;

变量$GLOBALS[index]数组中存储了所有的全局变量,这个数据可以在函数内访问并更新;

static当函数执行完后,变量值生命周期仍存在;

//

echo "This","is","a","test";
print "123";
差异:
echo 能输出一个以上的字符串。它不返回任何值。
print 只能输出一个字符串,并始终返回1。

echo "my car is a {$cars[0]}"; // $cars=array("BMW", "BENZ"); 是个数组

//

字符串可以使用单引号(')或双引号(")

//

var_dump() 会返回变量的数据类型和值
如:
整数:
$x=1234
var_dump($x) ==> int(1234)
浮点数:
$x=10.35
var_dump($x) ==> float(10.35)
数组:
$cars=array("Volvo","BMW","BENZ");
var_dump($cars); ==>array(3) {[0]=> string(5) "Volvo" [1]=> string[3] "BMW" [2]=> string[4] "BENZ"}

//

对象: 对象是存储数据和有关处理数据的信息的数据类型。使用关键字class;

class Car
{
var $color;
function Car($color = "green") {
$this->color = $color;
}

function what_color() {
return $this->color;
}
}

//

NULL值:表示无值;标示变量是否为空;也用于区分空字符串与空值数据库;
可以通过把值设置为NULL,将变量清空。

//
strlen() 返回字符串的长度。
echo strlen("Hello world!") ==> 12

strpos() 用于检索字符串内指定的字符或文本。
如果找到,返回首个匹配的字符位置,没找到则返回FALSE。
echo strpos("Hello world!", "world"); ==>6 字符串首位置是0开始。

//

常量: 在脚本中无法改变该值。常量名称前面没有$符号。常量是全局的。
用define(x,y,z)函数设置常量:
参数1:定义常量的名称。
参数2:定义常量的值。
参数3:可选。默认是false(大小写敏感)。是否大小写敏感。
define("GREETING", "Welcome to w3cschool!");
echo GREETING;

//
字符串运算符:
. 串接 $txt1 = "Hello"; $txt2 = $txt1 . " world";  ==> $txt2 = "Hello world"
.= 串接赋值 $txt1 = "Hello"; $txt1 .= " world"; ==>$txt1 = "Hello world"

递增递减运算符:
++$x ==> $x加1,然后返回$x
$x++ ==> 返回$x,然后$x加1

比较运算符:
=== 全等(完全相同) $x等于$y,且它们类型相同,则返回true
<> 不等于
!== 不全等(完全不同) $x !== $y 如果$x不等于$y,且它们类型不相同,则返回true

逻辑运算符:
and 与 两个为true,返回true
or 或 至少一个为true,返回true
xor 异或 两个之中有且只有一个true,返回true
&& 与
|| 或
! 非

数组运算符:
+ 联合 $x+$y ==> $x和$y的联合(但不覆盖重复的键)
== 相等
=== 全等
!= 不相等
<> 不相等
!== 不全等

//

条件语句
if () {
} elseif () {
} else {
}

//

switch(expression)

{

case "grey":

  break;

default:

  break;

}

// 循环

while:

do..while:

for:

foreach:只适用于数组,遍历数组中的每个元素并循环代码块。

语法: foreach ($array as $value) {...}

// 函数

函数名对大小写不敏感。

// 数组

php中有三种数组类型:

索引数组:带有数字索引的数组

$cars[0] = "BMW";

关联数组:带有指定键的数组;2种方法创建

$age=array("peter"=>"32", "Ben"=>"25");

或:

$age['peter'] = "35";

多维数组:包含一个或多个数组的数组

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

// 数组排序

数组中的元素能够以字母或数字顺序进行升序或降序排序。a值,k键,r降序

sort():以升序对数组排序

rsort():降序

asort():根据值,升序

ksort():根据键,升序

arsort():根据值,降序

krsort():根据键,降序

// 超全局变量

在全部作用域中始终可用的内置变量。

超全局变量有:

$GLOBALS

$_SERVER 保存关于报头、路径和脚本位置的信息

$_REQUEST 用于收集html表单提交的数据

$_POST 广泛用于收集提交method="post"的html表单后的表单数据。$_POST也常用于传递变量

$_GET 用于收集提交html表单method="get"之后的表单数据

$_FILES

$_ENV

$_COOKIE

$_SESSION

其中:

1)_SERVER['PHP_SELF']

返回当前执行脚本的文件名

2)_SERVER['GATEWAY_INTERFACE'] 

返回服务器使用的CGI规范的版本

3)_SERVER['SERVER_ADDR']

返回当前运行脚本所在的服务器的IP地址

4)SERVER_NAME

返回当前运行脚本所在的服务器的主机名(www.baidu.com)

5)SERVER_SOFTWARE

返回服务器标识字符串(apache/2.2.24)

6)SERVER_PROTOCOL

返回请求页面时通信协议的名称和版本("HTTP/1.1")

7)REQUEST_METHOD

返回访问页面使用的请求方法(如POST)

8)REQUEST_TIME

返回请求开始时的时间戳(1525687494)

9)QUERY_STRING

返回查询字符串,如果通过查询字符串访问此页面

10)HTTP_ACCEPT

返回来自当前请求的请求头

11)HTTP_ACCEPT_CHARSET

返回来自当前请求的accept_charset头(如utf-8,iso-8859-1)

12)HTTP_HOST

返回来自当前请求的host头

13)HTTP_PEFERER

返回当前页面的完整URL(不可靠,因为不是所有用户代理都支持)

14)HTTPS

是否通过安全HTTP协议查询脚本

15)REMOTE_ADDR

返回浏览当前页面的用户的IP地址

16)REMOTE_HOST

返回浏览当前页面的用户的主机名

17)REMOTE_PORT

返回用户机器上连接到web服务器所使用的端口号

18)SCRIPT_FILENAME

当前执行脚本的绝对路径

19)SERVER_ADMIN

该值指明了apache服务器配置文件中的SERVER_ADMIN参数

20)SERVER_PORT

web服务器使用的端口,默认为80

21)SERVER_SIGNATURE

返回服务器版本和虚拟主机名

22)PATH_TRANSLATED

当前脚本所在文件系统的基本路径

23)SCRIPT_NAME

返回当前脚本的路径

24)SCRIPT_URI

返回当前页面的URI

>$_GET例子

"test_get.php?subject=PHP&web=www.baidu.com"

echo "study" . $_GET['subject'] . " at " . $_GET['web'];

// 表单处理

GET与POST

get与post都创建数组,其中键是表单控件的名称,值来自用户的输入数据;

$_GET是通过URL参数传递到当前脚本的变量数组

$_POST是通过HTTP POST传递到当前脚本的变量数组

通过GET方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在URL中);发送信息的数量在2千个字符;

通过POST方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入HTTP请求的主体中),对发送信息的数量也无限制

// 表单验证

htmlspecialchars()函数把特殊字符转换为HTML实体,这意味着 < 和 > 之类的html字符会被替换为&lt; 和 &gt;

通过htmlspecialchars()函数能够避免$_SERVER['PHP_SELF']被利用;

在用户提交表单时,我们还要做2件事:

1>通过php trim()函数去除用户输入数据中不必要的字符(多余的空格、制表符、换行)

2>通过php stripslashes()函数,删除用户输入数据中的反斜杠()

// 表单必填

empty($_POST["name"])检查变量是否为空

// 表单验证email和url

if (!preg_match("/^[a-zA-Z]*$/", $name)){...}

preg_match()函数检索字符串的模式,如果模式存在则返回true,否则返回false;

验证email

if (!preg_match("/([w-]+@[w-]+.[w-]+)/", $email)) {...}

验证URL

if (!preg_match("/(?:(?:https?|ftp)://|www.)[-a-z0-9+&@#/%?=~_|!:,.;]*[-a-z0-9+&@#/%=~_|]/i",$website)) {...}

// 在用户提交表单后保留输入字段中的值

原文地址:https://www.cnblogs.com/sylar-liang/p/4579536.html