PHP头条
热点:

PHP基础,


一、PHP概念与原理

1、PHP概念
PHP是Hypertext Preprocessor(超文本预处理器)的字母缩写,是一种广泛使用的服务器端编程语言,用于开发动态网页。PHP是一种开源的、跨平台的、独立于架构的、解释的、面向对象的、快速的、健壮的、安全性高的Web编程语言。

2、PHP原理

二、PHP语法

PHP脚本以<?php 开始 ,以?>结束。

<?php
//PHP代码
?>

PHP 文件的默认文件扩展名是 “.php”。
PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码。
通过 PHP,有两种在浏览器输出文本的基础指令:echoprint

三、PHP变量

实例:

<?php
  $x=1;
  $y=2;
  $z=$x+$y;
  echo "$z";
?>

1、PHP变量规则:
1)变量以 $ 符号开始,后面跟着变量的名称;
2)变量名必须以字母或者下划线字符开始;
3)变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ );
4)变量名不能包含空格;
5)变量名是区分大小写的($y 和 $Y 是两个不同的变量);

2、PHP 是一门弱类型语言
即不必向 PHP 声明该变量的数据类型,PHP 会根据变量的值,自动把变量转换为正确的数据类型。
在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。

3、PHP变量作用域
PHP有四种不同的变量作用域:
1)local
2)global
3)static
4)parameter

4、变量的参考指定
要使变量$x在值跟着变量$y的值发生改变,加上一个&

$y=1;
$x=&$y;

5、可变变量

$x="hello";
$$x="world";
echo "$x $hello"
//上述代码实际定义了两个变量,变量$x的值为”hello“,变量$hello的值为”world“;变量$hello就等于$$x

//要保证输出的正确性,必须用大括号将原先的变量包含起来
echo "$x ${$x}";

局部和全局作用域

<!DOCTYPE html>
<html>
  <head>
      <meta charset="utf-8" />
	  <title></title>
  </head>
  <body>
     <?php
	    $x=5; //全局变量
		
		function Test()
		{
			$y=2;
		    
			echo "$x";  //无法输出
			echo "$y"; //局部变量
		}
		
		Test();
		echo "$x";
		echo "$y"; //无法输出
	 ?>

  </body>
</html>

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

<?php
	    $x=5; //全局变量
		function Test()
		{
			global $x; //使用global关键字
			$y=2;
		    
			echo "$x"; //可以输出了。
			echo "$y"; //局部变量
		}
		Test();
	 ?>

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

<?php
	    $x=5; //全局变量
	    $y=4;
		function Test()
		{
			$GLOBALS['x']=$GLOBALS['x']+$GLOBALS['y'];
		}
		Test();
		echo "$x";
	 ?>

四、PHP的数据类型

布尔型、整型、浮点型、字符串型、数组、对象、资源型、NULL。

1、布尔数据类型
布尔数据类型只有TRUE与FALSE两个值,且不区分大小写,即可以写成true与false,或是True与False。

若要将其他的数据类型转换成布尔数据类型,需要在前面加上(bool)或是(boolean
例如:

$a=100;
$b=0;
echo "a=".(bool)$a.",b=".(boolean)$b; //输出a=1,b= 

用户可用gettype()函数来返回数据类型的种类。

如果要将其他数据类型转换为布尔数据类型,以下被认为是布尔值false:
(1)整数0,浮点数0.0;
(2)空字符串以及字符串“0”;
(3)没有元素的数组;
(4)没有成员变量的对象;
(5)特殊的数据类型NULL(包括未设置的变量);
(6)出来0以外的数字都认为是布尔值true,包括负数。

2、整数数据类型
整数可以使用十进制、八进制、十六进制来表示,在Windows操作系统中,有效范围是-2147483648~2147483647.

如果要显示的数字超出了整数数据类型的有效范围,PHP会使用浮点数进行表示。
例如:

$x=2147483647;
echo gettype($x); //没有超过范围,输出integer
$y=2147483648;
echo gettype($y); //超出了范围,输出double

如果要将其他数据类型转换成整数数据类型,在前面加上(int)或是(integer

不要将未知的小数使用(int)或(integer)强制转换成整数数据类型进行计算,因为得到的结果是无法预测的。
例如:

echo (int)((0.1+0.7)*10) //浏览器输出为7,而不是正确的8!!

3、浮点数数据类型
(1)可以使用round()函数来将浮点数四舍五入,转换成指定小数点精度的整数或浮点数。
例如:

echo round(3.4); //输出 3
echo round(3.5); //输出 4
echo round(3.6,0); //输出 4;保留0位小数,对第一位小数四舍五入
echo round(1.95583,2); // 输出1.96 ;保留2位小数,对第三位小数四舍五入
echo round(1241757,-3); //输出1242000 ;从整数的右边开始,对第三位整数四舍五入

(2)可以使用ceil()函数来将浮点数无条件进位,转换成整数,但ceil()函数返回的值仍是浮点数数据类型。
例如:

echo ceil(4.3); //返回浮点数5

(3)可以使用floor()函数来将浮点数无条件舍去,转换成整数,但floor()函数返回的值仍是浮点数数据类型。
例如:

echo floor(4.3); //返回浮点数4

注意:不管是使用round、ceil、floor还是(int)来转换浮点数,未知小数在计算中因精度转换的关系,会产生无法预期的结果。
例如:

floor(((0.1+0.7)*10))  //浏览器的输出为7,而不是正确的8!

4、字符串数据类型
字符串可以使用单引号或者双引号包起来;但是有嵌套时:外层为单引号,内层为双引号。

(1)PHP的字符串只能表示256个字符,所以它不支持Unicode 。
(2)可使用以下方式取出字符串中的某个字符;

$str="hello";
echo $str{0}; //输出h
echo $str{4}; //输出o

(3)可使用strlen()函数取得字符串的长度;

(4)在将字符串与数字相加时,结果会得到数字,字符串会被转换成字符串开头能够转换的数字;
例如:

$x=2+"12.5"; //$x是浮点数(14.5)

$x=1+"mynumber ";  //$x是整数(1)

$x=1+"10book";  //$x是整数(11)

(5)可使用ord()函数取得字符的ASCII码;

$str="\n";
echo ord($str); //输出10

(6)可使用chr()函数将ASCII码转换成字符;

echo chr(65); //输出A

(7)如果要将其他数据类型转换成整数数据类型,在前面加上(String
布尔值true将转换成字符串"1" ,布尔值false将转换成空字符串"" 。

5、数组数据类型
特别之处:可以使用字符串作为数组下标;也可以指定数组下标。

<?php
   $arr["first"]="a";  //字符串做下标
   $arr["second"]="b";
   echo $arr["first"];
			
   $arr2=array(2 => "aa","bb");  //指定下标
   echo $arr2[2];  //输出aa
  
    ?>

6、资源数据类型
PHP从4.0版开始新增加了资源(resource)数据类型,这种变量用来参考到外部的资源。例如:取得XML剖析器、MySQL数据库以及外部文件等。

7、NULL数据类型
NULL数据类型的值只能是NULL,这意味着变量的值就是NULL,没有其他的值。

其他的与其他语言类似。

五、PHP常量

使用define()函数设置常量

define(“常量名”,“常量值”,case_insensitive )
case_insensitive:可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。

<?php
	define("PI","3.1415926");
	echo PI;
	
	define("PI","3.1415926",true); //大小写不敏感
	echo pi;	
	 ?>

六、PHP的内置数组和函数

PHP提供了一套附加的内置数组,也叫预定义数组,它们是一类特殊的数组,在全局范围内自动生效,在程序中直接使用,儿无须事先定义和初始化。这些数组变量包含了来自Web服务器,运行环境和用户输入的数据。

1、$GLOBALS : 包含一个引用指向每个当前脚本的全局范围内有效的变量,该数组的键名为全局变量的名称;

2、$_SERVER : 由Web服务器设定或者直接与当前脚本的执行环境相关联,是一个包含诸如头信息、路径和脚本位置的数组,该数组的实体由Web服务器创建;

3、$_GET : 经由URL请求提交至脚本的变量,是通过HTTP GET方法传递的变量组成的数组;

4、$_POST : 经由HTTP POST方法请求提交至脚本的变量,是通过HTTP GET方法传递的变量组成的数组;

5、$_COOKIE : 经由HTTP Cookies方法提交至脚本的变量,是通过HTTP Cookies传递的变量组成的数组,也用于读取Cookies值;

6、$_REQUEST : 经由GET、POST、COOKIES机制提交至脚本的变量。包括GET、POST、COOKIES的所以数据;

7、$_FILES : 经由HTTP POST文件上传而提交至脚本的变量,是通过HTTP POST 方法传递的已上传文件项目组成的数组,可用于PHP文件上传编程;

8、$_SESSION: 是当前注册给脚本会话的变量,是包含当前脚本中会话变量的数组,也用于访问会话变量;

1、接收表单数据和URL附加数据

PHP 中的 $_GET$_POST 变量用于检索表单中的信息,比如用户输入。t通过name属性值:即$_POST[name属性值]。
实例:
这里有一个静态网页

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<form action="/test2.php" method="post">
			姓名:<input type="text" name="name"/>
			<br />
			兴趣:<input type="text" name="hobby"/>
			<br />
			性别:
			<input type="radio" name="sex" value="男"/>男
			<input type="radio" name="sex" value="女"/>女
			<br />
			血型:
			<input type="radio" name="xuexing" value="A"/>A
			<input type="radio" name="xuexing" value="B"/>B
			<input type="radio" name="xuexing" value="AB"/>AB
			<input type="radio" name="xuexing" value="O"/>O
			<br />
			
	       <input type="submit" />
	       <input type="reset" />
			
		</form>
		
	</body>
</html>

则在PHP动态网页接收用户输入时:

<!DOCTYPE html>
<html>
  <head>
      <meta charset="utf-8" />
	  <title></title>
  </head>
  <body>
     <?php
	    echo "你的名字:$_POST[name]";
		echo "<br />";
		echo "兴趣: $_POST[hobby]";
		echo "<br />";
	    echo "性别:$_POST[sex]";
		echo "<br />";
		echo "血型:$_POST[xuexing]";
   ?>
  </body>
</html>

2、字符串处理函数

去除空格函数
(1)trim()函数:该函数用于去除字符串开始位置和结束位置的空格字符
语法:trim(string str [,string charlist])
其中,参数str表示待处理的字符串;charlist为可选参数,指定要去除的字符,如果不指定该参数,则该函数将去除空格、制表符、空字节、换行符和回车符;

(2)ltrim()函数:该函数用于去除字符串左边的空格或其他指定的字符,并返回处理后的字符串;
语法:ltrim(string str [,string charlist])
其中参数的含义及功能和trim()函数完全一致;

(3)rtrim()函数:该函数用于去除字符串右边的空格或其他指定的字符,并返回处理后的字符串;
语法:rtrim(string str [,string charlist])
其中参数的含义及功能和trim()函数完全一致;

3、HTML处理相关函数

(1)nl2br()函数:当HTML文件中存在”\n“时,程序运行后不能显示换行效果,此时可以使用nl2br()函数将字符串中的换行符”\n“替换为HTML中的”<br>“标记;
例如:

$str="Welcome to \n Chengdu";
echo $str; // 直接输出不会有换行符
echo nl2br($str); // ”Welcome to “后面换行

(2)htmlspecialchars()函数:该函数可以将字符转化为HTML的实体形式;
htmlspecialchars()函数将特殊的HTML标签转化为HTML实体并以普通文本显示出来,可以用来防止恶意脚本对网站的工具;

可以转换为HTML实体形式的特殊字符:

原字符 转换后的字符
& &
" "
'
< &lt
> &gt

(3)htmlentities()函数:该函数把字符串的一些HTML标签转化为HTML实体并返回经过处理的字符串。与htmlspecialchars()函数类似,htmlentities()函数也可以将特殊字符转化为实体。它们的区别是:htmlspecialchars()函数只能转换&、",’ ,< 和 >这5个字符,二htmlentities()函数可以把汉字也一起进行转换;
例如:

$str="<font size=5>xxxxx</font>"
echo htmlentities($str);  //输出<font size=5>xxxxx</font>

4、改变字符串大小写
使用strtolower()函数可以将字符串全部转化为小写;使用strtoupper()函数可以将字符串全部转化为大写;

5、字符串拆分与连接

(1)explode()函数:可以用指定的字符串分割另一个字符串,并返回一个数组;
语法:explode(string $separator, string $str [, int $limit])
其中:字符串 $separator是分割字符串 $str的边界点,参数 $limit是可选参数,如指定了此参数,则返回的数组中包含最多 $limit个元素,并且最后那个元素将包含str的剩余部分;
例如:

$str=" 使用  空格  分割";
$array=explode(" ", $str);
print_r($array); //输出array([0]=>使用 [1]=>空格 [2]=>分割)

(2)str_split()函数:与explode()函数不同的是,str_split()函数不以某个字符串为分割依据,而是以一定长度为单位将字符串分割成多段,并返回由各段组成的数组;
语法:str_split(string $str ,[,int $len])
其中, $str为要分割的字符串,可选参数 $len是分割的单位长度(默认的单位长度是1)

(3)implode()函数:与explode()函数和str_split()函数相反,使用implode()函数可以将存储在数组中的不同元素中的字符串连接成一个字符串;
语法:implode( string $glue , array $arr)
其中, $arr为保存连接字符串的数组, $glue是用于连接字符串的连接符;
例如:

$arr=array("welcome","to","China");
$str=implode(",",$arr); //使用逗号作为连接符
echo $str; //输出“welcome to China”

6、字符串查找

(1)substr()函数
语法:substr(string str,int start [, int length])
其中,
参数str是被操作的字符串;
参数start用来指定子串的起始位置,如默认,表示从第一个字符开始如果该参数为负数,则从原字符串末尾向前数start个字符,并由此开始取子串,如果start所指定的位置超过了str范围,则该函数返回false;
参数length用来指定子串的长度,如默认此参数或者该参数大于原操作字符串的长度,则返回从起始位置之后的所以字符。

(2)stristr()函数
该函数用来在一个字符串中查找一个子串的首次出现,在查找时会区分字符的大小写。
语法:stristr(string $str ,string $needle)
其中,参数 $str指定原字符串;参数 $needle表示要查找的子字符串,如果它不是一个字符串,则将转换为一个整数并作为一个普通字符来使用。
如果在字符串 $str中出现了 $needle,则返回 $str字符串从 $needle第一次出现的位置到 $str字符串结束处的字符串。如果没有返回值,即没有发现 $needle,则返回false。

(3)strstr()函数
strstr()函数的功能与stristr()函数基本相同,只不过在查找子串时不区分大小写。

7、字符串替换

(1)str_replace()函数
语法:str_replace(mixed $search , mixed $replace , mixed $str [, int & $count])
str_replace()函数的功能是使用新的字符串 $replace 替换字符串 $str中的 $search字符串。 $count是可选参数,是PHP5中新添加的,表示要执行的替换操作的次数。
该函数中 $search, $replace , $str以及函数本身的返回值都是mixed类型,也就是说这些参数可以是多种类型,相应的返回值也是多种类型,如字符串、数组等;
例如:

$str="I love you";
$replace="China";
$end=str_replace("you",$replace,$str);
echo $end; //输出"I love China"

str_replace()函数对大小写敏感,支持多对一替换(即可以将多个不同的字符替换成同一个字符)和多对多替换(即可以将多个不同的字符替换为多个对应的不同字符),但无法实现一对多的替换。
例如:

$str="My name is John Smith";
$array=array("a","o","A","O","e");
echo str_replac($array,"",str); //多对一替换,输出"My nm is Jhn Smith"

$array1=array("a","b","c");
$array2=array("d","e","f");
echo str_replace($array1,$array2,"abcdef"); //多对多替换,输出“defdef”

(2)str_ireplace()函数
该函数功能与str_replace()函数功能基本相同,只是不区分大小写。

(3)substr_replace()函数
该函数用于替换子串的文本内容并返回替换后的字符串。
语法:substr_replace(mixed str , string replacement , int start [, int length])
其中,参数str表示原字符串;参数replacement为指定用来替换原子字符串的新字符串;start用来指定执行替换操作起始位置。length是可选参数,表示要替换的长度,如果不给定,则从start位置开始一直到字符串结束;如果length为0,则替换字符串会插入到原字符串中;如果length为正值,则表示要用替换字符串替换掉的字符串长度;如果length为负值,表示从字符串末尾开始到length个字符为止停止替换。
例如:

echo substr_replace("abcdefg","YES",3); //输出"abcYES"
echo substr_replace("abcdefg","YES",3,3); //输出"abcYESg"
echo substr_replace("abcdefg","YES",-2,2); //输出"abcdeYES"
echo substr_replace("abcdefg","YES",3,-2); //输出"abcYESfg"
echo substr_replace("abcdefg","YES",2,0); //输出"abYEScdefg"

8、字符串加密
PHP中,crypt() ,md5()等函数可以实现字符串的加密。

crypt()函数
语法:crypt(string $str [ , string $salt])
其中,参数 $str是需要加密的字符串;参数 $salt是一个位字串,能够影响加密的暗码,干扰非法人员识别明文,从而减少被破解的可能性。默认情况下,PHP使用一个2字符的DES干扰串。
例如:

$str="这是明文";
$des="ab;
echo crypt($str,$des);

crypt()函数只能完成单向的加密功能,也就是所它可以加密一些明码,但不能将加密后的密文转换为原来的明码。因此使用crypt()不是特别安全。若要获得更高的安全性,可使用md5()函数,该函数使用散列算法对指定的字符串进行加密。
语法:md5(string str [, bool raw_output])
其中,参数str是需要加密的字符串;参数 raw_output是可选参数,如果为true,则md5()函数返回一个长度为16位的二进制格式的摘要,如果为false,则返回长度为32位的十六进制格式的摘要,该参数默认为false
例如:

$str="我是明文";
echo md5($str);

下面还有时间日期函数、目录与文件的操作、PHP与数据库MySql的操作。。。啊,不想写了

www.phpzy.comtrue/php/19569.htmlTechArticlePHP基础, 一、PHP概念与原理 1、PHP概念 PHP是Hypertext Preprocessor(超文本预处理器)的字母缩写,是一种广泛使用的 服务器端编程语言,用于开发动态网页 。PHP是一种开源的、跨平台的、独...

相关文章

    暂无相关文章

PHP之友评论

今天推荐