PHP培训文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PHP培训第一讲PHP快速入门
什么是PHP?
0、最初是Personal Home Page 个人主页,现在是PHP超文本预处理程序的缩写。
1、PHP是一种服务器端脚本语言,是专门为WEB而设计的。
在一个HTML页面中,可以嵌入PHP代码,这些代码在每次页面被访问时执行。
PHP代码将在WEB服务器中被解释并且生成HTML或访问者看到的其他输出。
2、PHP是1994年出现的。
经历了四次重要的重新编写。
3、PHP是一个开放源代码的产品。
4、PHP主页:
5、PHP最新版本:6 学习版本5
6、PHP支持公司:Zend 网址:
7、优点:高性能,与许多不同数据库的接口,内置函数库,低成本,容易学习和使用。
本次介绍PHP的语法和语言结构。
1.1使用PHP
介绍运行环境。
(上机内容)
1.2创建一个示例应用:Bob‟s Auto Parts(Bob汽车零部件商店)
1.2.2表单处理:提交至processorder.php目前为止无论是输入的,还是提交的页面里,都是纯HTML内容。
现在我们可以试着添写简单的PHP脚本。
1.3在HTML中嵌入PHP
<?php
echo …Order processed‟;
?>
echo:输出函数,相当于JSP中的System.out.print();C#中的Respnose.Write();
1.3.1使用PHP标记通知WEB服务器PHP代码的开始和结束。
<?php ?>
1.3.2 PHP的标记风格:
XML风格:<?php ?>推荐使用的风格,不可禁用的,如果要结合XML开发,必须使用些种风格。
简短风格:<? ?>想要使用些风格必须在php.ini文件中启用short_open_tag选项。
如使用此种风格,会影响XML文档的声明。
SCRIPT风格:<script language=‟php></script>
ASP风格:<%%>想要使用些风格必须在php.ini文件中启用asp_tags选项。
默认是关闭状态。
1.3.3PHP语句:在PHP中,分号是用来分隔语句的。
丢失分号是容易出现的语法错误。
1.3.4空格:间隔字符,换行,空格和Tab都是空格。
1.3.5注释:支持C,C++和Shell(UNIX中的脚本语言)脚本风格的注释。
多行注释:/**/
单行注释://
问题:与HTML中的注释有何差别?
1.4添加动态内容
1.4.1调用函数:例:date(…H:i,js F‟);H是24小时的格式I是分钟,如果小时和键名数是个位数,需要在前面补0,J是该月的日期,不需要前面的补0,S表示顺序后缀,F是月份的全称。
1.5访问表单变量
1.5.1表单变量:PHP脚本中,可以以PHP变量的形式访问每一个表单域。
变量都是以$符号开始的。
简短风格:$tireqty;register_globals=on
中等风格:$_POST[…tireqty‟]; (推荐使用)
冗长风格:$HTTP_POST_V ARS[…tireqty‟];register_long_arrays
1.5.2字符串的连接:例:echo $tireqty.‟tires<br />‟;用点号(.)连接。
echo …$tireqtytires<br />‟;全部当做字符输出
echo “$tireqty.‟tires<br />”;有变量就输出变量
1.5.3变量和文本:变量是表示数据的符号。
字符串是数据本身。
PHP将试着计算双引号的字符串,而单引号字符串将被当作是真正的文本。
1.6理解标识符:标识符是变量的名称。
可以是任何长度;不能以数字开始;区分大小写,函数名称是个例外;一个变量名称可以与一个函数名称相同,要尽量避免。
不能创建一个具有与已有函数同名的函数。
1.7创建用户声明的变量:PHP的特性之一就是它不要求在使用变量之前声明变量。
当第一次给变量赋值时,才创建这个变量。
1.8给变量赋值:用(=)赋值。
1.9检查变量的类型:变量类型是指保存在该变量中的数据类型。
1.9.1PHP的数据类型:Integer(整数) Float(浮点数) String(字符串) Boolean(布尔) Array(数组) Object(对象)保存类的实例。
特殊类型:NULL(空)sesource(资源)特定的内置函数。
1.9.2类型强度:PHP是一种弱类型语言。
大多数编程语言中,变量只能保存一种数据类型,而且是在使用前一定要先声明。
PHP中变量的类型是由赋给变量的值确定的。
例:$totalqty = 0;为整型
$totalamount = 0.00为浮点型
$totalamount = …Hello‟;PHP可以在任何时间根据保存在变量中的值来确定变量的类型。
1.9.3类型转换:可以将一个变量或值转换成另一种类型。
例:$totalqty = 0;
$totalamount = (float)$totalqty; $totalamount是浮点型,$totalqty整型。
1.9.4可变变量:允许我们动态地改变一个变量的名称。
工作原理:用一个变量的值作为另一个变量的名称。
例:$varname=‟tireqty‟;
$$varname = 5;等价于$tireqty=5;
1.10声明和使用常量:常量值一旦被设定后,在脚本的其他地方就不能再更改。
用define 函数定义这些常量:define(…TIREPRICE‟,100);常理都是由大写字母组成的。
引用一个常量时,它前面并没有$符号。
变量和常量的呈个差异在于常量只可以保存(布尔值,整数,浮点数,字符串)这几种是标题数据。
1.11理解变量的作用域:是指在一个脚本中某个变量在哪些地方可以使用或可见。
内置超级全局变量:在脚本的任何地方使用和可见。
常量:一旦被声明,在全局可见。
在一个脚本内声明的全局变量在整个脚本中是可见的。
1.12使用操作符:是用来对数值和变量进行某种操作运算的符号。
1.1
2.2字符串操作符:$a = "Hello "; $a .= "World!";
前置递增递减:++$a,--$a;后置递增递减:$a++,$a—
引用:引用操作符&。
$c=5;
$d=&$c;
$c=90;
echo $d;
1.1
2.6位操作符:位运算符允许对整型数中指定的位进行置位。
如果左右参数都是字符串,则位运算符将操作字符的ASCII 值。
1.1
2.7其他操作符:三元操作符:“?:” 表达式(expr1) ? (expr2) : (expr3) 在expr1 求值为
TRUE 时的值为expr2,在expr1 求值为FALSE 时的值为expr3。
注意: 注意三元运算符是个语句,因此其求值不是变量,而是语句的结果。
如果想通过引用返回一个变量这点就很重要。
在一个通过引用返回的函数中语句return $var = = 42 ? $a : $b; 将不起作用,以后的PHP 版本会为此发出一条警告。
错误抑制操作符:@,可以在任何表达式前面使用。
$a=@(57/0); 抑制警告,如果启用PHP的track_error 特性,错误信息会保存在全局变量$php_errormsg中。
默认是关闭状态。
操行操作符:是一对(``)。
DOS命令的结果。
$out=`dir c:`;
echo $out;此项操作要对windows/system32/cmd.exe增加一个用户IUSR_机器名,不推荐此项操作,会降低系统的安全性。
类型操作符:instanceof 用来测定一个给定的对象,它的父对象或它们所实现的接口是否来自指定的对象类。
<?php
class A { }
class B { }
$thing = new A;
if ($thing instanceof A) {
echo 'A';
}if ($thing instanceof B) {echo 'B';}?>
1.13使用操作符:讲解目的:理解操作符的优先级和结合性。
1.14操作符的优先级:PHP手册(运算符优先级)
1.15使用可变函数:PHP有一个函数库,这个库允许我们使用不同的方法来操作和测试变量。
1.15.1测试和设置变量类型:大部分的可变函数都是测试一个函数的类型的。
最常见的两个函数:gettype();和settype();
要使用gettype(),必须先给它传递一个变量。
然后它将确定变量的类型,并返回一个包含类型名称的字符串。
如果不是标准类型(Integer(整数) Float(浮点数) String(字符串) Boolean(布尔) Array(数组) Object(对象)保存类的实例),则返回“unknown type”。
要使用settype(),必须先传递一个要被改变类型的变量,及包含标准类型的字符串。
例:$a=56;
echo gettype($a); integer
settype($a,‟double‟);
echo gettype($a); double
1.15.2测试变量状态:isset();检测变量是否设置。
描述:bool isset ( mixed var [, mixed var [, ...]] )此函数需要一个变量名做为参数,如果变量已经设置,返回true(输出的是1),否则返回false(无任何输出)。
也可以传递一个由逗号间隔的变量列表,如果所有的变量都被设置了,返回true(1)。
empty();检查一个变量是否为空。
描述:bool empty ( mixed var )。
如果var是非空或非零的值,则empty()返回FALSE。
如果var为空或为0,则返回TRUE。
empty() 与isset() 的一个简单比较。
<?php
$var = 0;
// 结果为true,因为$var 为空
if (empty($var)) {
echo '$var is either 0 or not set at all';
}
// 结果为false,因为$var 已设置
if (!isset($var)) {
echo '$var is not set at all';
}?>
1.15.3变量的重解释:通过调用一个函数来实现转换变量数据类型的目的。
int intval ( mixed var [, int base] )。
通过使用特定的进制转换(默认是十进制),返回变量var 的integer 数值。
floatval,strval,(参考PHP手册)
1.16实现控制结构:控制结构是一个程序语言中用来控制一个程序或脚本执行流程的结构。
可以将它们分类为:条件(分支)、重复(循环)。
1.17根据条件进行判断。
1.17.1 if语句:条件必须用“()”括起来。
1.17.2代码块:执行多条语句,要声明一个代码块,用“{}”。
要进行适当的缩进。
1.17.3 else语句
1.17.4 elseif语句:可以写成elseif或else if 中间的空格是可有可无的。
1.17.5switch语句:工作方式类似于if语句。
很多场合下需要把同一个变量(或表达式)与很多不同的值比较,并根据它等于哪个值来执行不同的代码。
这正是switch语句的用途。
1.18通过迭代(循环)实现重复的动作
1.18.1 while循环:只要条件为true,就是不断地重复执行代码块。
1.18.2 for和foreach循环。
Foreach专门用于数据的使用。
(在讲到数组时再介绍)。
1.18.3 do while循环:循环中的语句或语句块至少会执行一次。
1.19从控制结构或脚本中跳出:
break:结束当前循环,break可以接受一个可选的数字参数来决定跳出几重循环。
(手册有例子)
continue:在循环结构用用来跳过本次循环中剩余的代码并在条件求值为真时开始执行下一次循环。
exit:结束整个PHP脚本的执行,不会执行其余的脚本。
1.20使用可替换的控制结构语法:
if(){}可替换为if(): endif;关键字可以是:endif endswitch,endwhile endfor endforeach,对于do while没有可替换的语法。
1.21使用declare:结构用来设定一段代码的执行指令,就是关于后续代码如何运行的规则。
(自学参考手册)
PHP培训第二讲数据的存储与检索
2.1保存数据以方便后期的使用:存储数据有两种最基本的方法:保存到普通文件,或者保存到数据库中。
普通文本可以是多种格式,通常所指的普通文件是简单的文本文件。
2.2存储和检索一份订单:(学员自己在机器上创建一个表单)
2.3文件处理:将数据写入一个文件,有3个步骤
1、打开这个文件。
如果文件不存在,需要先创建。
2、将数据写入这个文件。
3、关闭这个文件。
从一个文件中读出数据,也有3个步骤
1、打开这个文件。
如果文件不能打开(例如,文件不存在),就应该意识这一点并且正确地退出。
2、从文件中读出数据。
3、关闭这个文件。
当希望从一文件中读出数据时,可以选择一次从文件读取多少数据。
2.4打开文件:在PHP中打开一个文件,可以使用fopen()函数。
当打开一个文件的时候,还需要指定如何使用它。
也就是文件的模式。
2.4.1选择文件模式:通常,服务器上的操作系统必须知道要对打开的文件进行什么样的操作。
操作系统需要了解在打开这个文件后,这个文件是否还允许其他脚本再打开,还需要了解使用者是否具有在这种方式下使用该文件的权限。
当打开一个文件的时候,有3种选择:
1、打开文件为了只读、只写或者读写。
2、如果要写一个文件,可能会希望覆盖所有已有的文件内容,或者仅仅是将新的数据
追加到文件末尾。
还有一种可能,如果该文件已经存在,也要以终止程序的执行。
3、如果希望在一个区分了二进制方式和纯文本方式的系统上写一个文件,还必须指定
采用的方式。
(非文本文件打开通常看到的都是乱码)
函数fopen()支持以上3种方式的组合。
2.4.2使用fopen()打开文件:假设表单要定入到一个.txt文件中,可以全用如下所示的语句打开这个文件:
$fp=fopen(“orders/orders.txt”,‟w‟);
调用fopen()的时候,需要传递2个、3个或4个参数。
通常使用2个参数。
第一个参数是要打开的文件,可以指定该文件的路径,上面的例子里orders.txt文件要保存在orders目
录里。
在UNIX环境下,目录中的间隔符是正斜线(/)。
如果使用反斜线(\),就必须使用转义字符,这样fopen()函数才能正确的理解这些字符。
要转义一个字符,只需要简单地在其前面添加一个反斜线(\)。
$fp=fopen(“orders\\orders.txt”,‟w‟);PHP代码中,只有少数人会使用反斜线,因为这意味着代码只能在windows上运行。
如果使用正斜线,代码不需要任何修改,就可以在Windows和UNIX机器上运行。
fopen()函数的第二个参数是文件模式,它是一个字符串,指定了将对文件时行的操作。
在这个例子中,我们将”w”传给了fopen(),意味着要以“写”的方式打开这个文件。
第二种方法:使用全局变量$_SERVER['DOCUMENT_ROOT']
作用:取得当前运行脚本所在的文档根目录,获取相对路径。
例子:fopen($_SERVER['DOCUMENT_ROOT'].'/chapter02/orders.txt','ab')
个人理解:当文件一定要写在根目录的时候,并且无法获知当前操作文件所在路径里,可以使用此方法。
fopen($_SERVER['DOCUMENT_ROOT'].'文件名', '属性')
2.4.3通过FTP或HTTP打开文件:在PHP.INI文件中,可能通过allow_url_fopen指令来禁用这个功能。
例:$handle = fopen("/", "r");
$handle = fopen("ftp://user:password@/somefile.txt", "w"); 2.4.4解决打开文件时可能遇到的问题:当打开文件时,经常的错误是试图打开一个没有权限进行读写操作的文件。
PHP将给出警告。
2.5写文件:在PHP中写文件相对比较简单。
可以使用fwrite()或者fputs(),fputs()是fwrite()的别名函数。
fwrite($fp,$outputstring)这个函数将告诉PHP将保存在$outputstring中的字符串写入到$fp指向的文件中。
2.5.1 fwrite()的参数:有3个参数,但第3个参数是可选的。
原型:fwrite ( resource handle, string string [, int length] ),第3个参数length是写入的最大字符。
如果给出了这个参数,将向handle指向的文件定稿字符串,一直
写到字符串的末尾,或都已经写入了length字节,满足这两个条件之一就停止写入。
2.6关闭文件:当使用完文件后,应该将其关闭。
fclose($fp);如果文件被成功关闭,函数将返回一个true值。
2.7读文件
2.7.1以只读模式打开文件:$fp=fopen(“orders\\orders.txt”,‟rb‟);
2.7.2知道何时读完文件:feof() File End Of File
while (!feof($file)) {
}
fclose($file);
通常是在读文件的时候,我们进行持续进行读文件操作,直到EOF。
2.7.3每次读取一行数据:fgets()、fgetss()、fgetcsv()
fgets():fgets (resource handle [, int length] ) 从handle指向的文件中读取一行并返回长度最多为length - 1 字节的字符串。
如果没有指定length,则默认为1K,或者说1024 字节。
逐行读取文件
<?php
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}fclose($handle);
}
?>
fgetss ( resource handle [, int length [, string allowable_tags]] )
fgetss()和fgets()相同,只除了fgetss尝试从读取的文本中去掉任何HTML和PHP标记。
可以用可选的第三个参数指定哪些标记不被去掉。
fgetcsv ( int handle [, int length [, string delimiter [, string enclosure]]] )
fgetcsv():可将一个文件分成多行。
必须向个这函数传递一个用于分隔表单域的定界符。
<?php
$row = 1;
$handle = fopen("test.txt","r");
while ($data = fgetcsv($handle, 1000, ",")) {
$num = count($data);
echo "<p> $num fields in line $row: <br>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br>\n";
}
}
fclose($handle);
?> count -- 计算数组中的单元数目或对象中的属性个数。
2.7.4 读取整个文件:readfile()、fpassthru()、file()
调用readfile()将打开一个文件,将文件内容输出到页面中。
readfile("test.txt");返回值是从文件中读出的字节总数。
fpassthru()使用这个函数前,先要使用fopen()打开一个文件,然后将文件的指针做为参数传递给fpassthru()。
file()是一个数组类型。
和readfile()一样使用,只不过把结返回到数组中。
文件中的每一行都将做为一个元素保存在这个数组中。
2.7.5读取一个字符:fgetc()一次读取一个字符。
作用:就是为了整理输出格式
$ff = fopen("test.txt","r");
while(false!==($char=fgetc($ff)))
{echo $char;}
2.7.6读取任意长度:fread() fread ( resource fp, int length )(手册中的原型说明不对)。
该函数从文件中读取任意长度的字节。
使用此函数时,它或是读满了length参数所指定的字节数,或是就是卖到了文件末尾或网络数据的结束。
2.8使用其他有用的文件函数
2.8.1查看文件是否存在:file_exists()
<?php
$filename = '/path/to/foo.txt';
if (file_exists($filename)) {
echo "The file $filename exists";
} else {
echo "The file $filename does not exist";
}
?>
2.8.2确定文件的大小:filesize() 如果出错返回FALSE并生成一条E_WARNING级的
错误。
2.8.3删除一个文件:unlink() 如果成功则返回TRUE,失败则返回FALSE。
2.9文件锁定解决并发问题。
flock()
要取得共享锁定(读取的程序),将operation设为LOCK_SH可以共享,可以读文件要取得独占锁定(写入的程序),将operation设为LOCK_EX文件不能被共享
要释放锁定(无论共享或独占),将operation设为LOCK_UN释放已有的锁
如果不希望flock() 在锁定时堵塞,则给operation 加上LOCK_NB
<?php
$fp = fopen("/tmp/lock.txt", "w+");
if (flock($fp, LOCK_EX)) { // 进行排它型锁定
fwrite($fp, "Write something here\n");
flock($fp, LOCK_UN); // 释放锁定
} else {
echo "Couldn't lock the file !";
}
fclose($fp);
?>
注意: 由于flock()需要一个文件指针,因此可能不得不用一个特殊的锁定文件来保护打算通过写模式打开的文件的访问(在fopen()函数中加入"w" 或"w+")。
PHP培训第三讲使用数组
使用数组,可以更容易地处理重复的信息。
例如客户订单之类。
而且,程序员将会写出更简洁、更整齐的代码。
一个数组就是用来存储一系列变量值的命名区域。
存储在数组中的值称为元素。
每个数组元素有一个相关的索引(也称为关键字),它可以用来访问元素。
大多数编程语言中,数据都具有数字索引,这些索引通常是从0或1开始。
3.2数字索引数组:大多数编程语言都支持这种数组。
在PHP中,数字索引的默认值是从0开始的,也可以改变默认值。
3.2.1数字索引数组的初始化:代码如下:$prod = array(…a‟,‟b‟,‟c‟);此代码创建一个名为$prod的数组,它包含3个给定值:a、b、c。
注意:array()是一个语言结构,而不是一个函数。
常用的echo()也是一个语言结构。
如果所需数据要保存在另一个数组中,可以使用运算符“=”简单地将数组复制到另一个数组中。
如果需要将按升序排列的数字保存在一个数组中,可以使用range()函数自动创建这个数组。
如下代码将创建一个从1到10的数字数组:$numbers = range(1,10);
range()函数具有一个可选的第三个参数,这个参数允许设定值之间的步幅。
例如,如需建立一个1到10之间的奇数数组,可以使用如下代码:$odds = range(1,10,2);
range()也可以对字符进行操作,如下例所示:$letters = range(…a‟,‟z‟);
如果信息保存在磁盘文件中,可以从这个文件直接载入到数组中。
(稍后会介绍)
如果数组中使用的数据保存在数据库中,可以从数据库中直接载入数组。
3.2.2访问数组的内容:可以使用变量名和关键字或索引的组合来访问其内容。
关键字或索引将指定我们要访问的变量。
使用$prod[0],就可以使用数组$prod的内容了。
在默认情况下,0元素是数组的第一个元素。
像其他变量一样,使用运算符“=”可以改变数组元素的内容。
如下代码可以增加一个新的元素-“fuses”-到数组末尾,这样可以得到一个具有4个元素的数组。
$prod[3]=‟fuses‟;要显示其内容,可以用如下代码:
echo $prod[0],$pord[1],$prod[2],$prod[3];
3.2.3使用循环访问数组:foreach($products as $current){echo $current.‟‟;}
3.3使用不同索引的数组(相关数组):最常用的访问数组的方法就是访问数组元素的下标。
PHP支持相关数组。
在相关数组中,可以将每个变量值与任何关键字或索引关联起来。
(可以理解为一键对一值的关系)。
3.3.1初始化相关数组:如下代码可以创建一个以产品名称为关键字、以价格作为值的相关数组。
例:$prices = array(…title‟=>100,‟Oil‟=>10,‟Spark_Plugs‟=>4);
3.3.2访问数组元素:可以使用变量名称和关键字来访问数组的内容,因此就可以勇者这样的方式访问保存在prices数组中的信息,例如$prices[…title‟]。
3.3.3使用foreach()访问相关数组:foreach($prices as $key=>$value)
echo $key.‟=>‟.$value.‟<br />‟;
同的索引时,它们不会被添加。
即$a中的元素将不会被覆盖。
重复的键值不会被覆盖
3.5数组排序(、
3.5.1使用sort()函数,对数字索引数组进行排序:如下代码可以将数组按字母升序进行排序:
$products = array(…Tires‟,‟Oil‟,‟Spard plugs‟);
sort($products);现在该数组包含元素的顺序是:Oil,Tires,Spard plugs
还可以按数字顺序进行排序。
$prices = array(100,4,8) sort($prices) 4,8,100
sort()函数是区分字母大小写的。
所有的大写字母都在小写字母的前面。
sort()的第二个参数有三种:
SORT_REGULAR - 正常比较单元(不改变类型)
SORT_NUMERIC - 单元被作为数字来比较
SORT_STRING - 单元被作为字符串来比较
3.5.2使用asort()函数和ksort()函数对相关数组进行排序:
$prices = array(…title‟=>100,‟Oil‟=>10,‟Spark_Plugs‟=>4); assort()根据数组的每个元素值进行排序。
如果不是按价格排序而要按说明排序,就可以使用ksort()函数。
3.5.3反向排序:rsort(),arsort()和krsort()。
反向排序函数与排序函数的用法相同。
3.5.4 随机排序:函数shufflw()将数组的元素进行随机排序。
(解释:随机图片)
3.6从文件载入数组:使用函数file()将整个文件载入一个数组中。
$lines = file('orders.txt');
foreach ($lines as $line_num => $line)
{
echo "第<b>{$line_num}</b>行: ".$line."<br />\n";
}
PHP培训第四讲字符串操作与正则表达式
通常,在使用用户输入的字符串(通常是来自HTML表单界面)之前,必须要对它们进行整理。
下面着重介绍一些可用的函数。
4.1.1字符串的整理:trim()、ltrim()、rtrim()。
整理字符串的第一步是清理字符串中多余的空格。
虽然这一步的操作不是必须的,但如果要将字符串存入一个文件或数据库中,或者将它和别的字符串进行比较,这就非常有用了。
trim()函数可以除去字符开始位置和结束位置的空格,并将结果字符串返回。
默认情况下,除去的字符是:换行符和回车符(\n,\r)、水平制表符和垂直制表符(\t,\x0B)、字符串结束符(\0)和空格。
注:以上提到的字符在HTML页面里是不显示出来的,因为HTML 不接收ASCII编码的,但在文件本文件中可以区分出来。
ltrim()只从字符串的开始处(左边)除去空格,rtrim()只从字符串的结束处(右边)除去空格。
trim()、ltrim()、rtrim()都不会去除字符串中间的空格。
4.1.2格式化字符串以便显示:
1.使用HTML格式化:nl2br()函数:将字符串做为参数,用HTML里的<br />标记代替字符中的换行符(\n)。
这对于将一个长字符显示在页面中是非常有用的。
2.为打印输出面格式化字符串:之前一直使用echo语言结构将字符串输出到浏览器。
PHP也支持print()结构,实现功能与echo()相同,但具有返回值(true or false)。
1个函数:printf()
printf()是将一个格式化的字符串输出到浏览器中。
使用printf()函数的优点在于,可以使用有用的转换说明来格式化一个字符串变量。
如$a=‟12.5‟;用echo输出就是‟12.5‟用printf(”%.2f”,$a)输出的结果是:12.50
可以在格式化的字符串中使用多个转换说明。
如果有n个转换说明,在格式化字符串后面应该带有n个参数。
每个转换说明都将按给出的顺序被一个重新格式化过的参数代替。
所有的转换说明都以%开始。
如果想打印一个%符号,必须使用“%%”。
转换说明的类型码
4.1.3格式化字符串以便存储:对于字符串来说,某些字符肯定是有有效的,但是当将数据插入到数据加中的时候可能会引起一些问题,因为数据库会将这些字符解释成控制符。
这些有问题的字符就是:单引号、双引号、反斜杠和UNLL字符。
我们需要找到一种标记或是转义它们的办法,使数据库能够理解我们表示的是实际意义的特殊文本字符,而不是控制序列。
为了将这些字符进行转义处理,可以在它们的前面加一个反斜杠。
这个规则对所有的特殊都通用,所以,如果在字符串中存在\\字符,就需要用\\\\替换。
PHP提供了两个专门用于转义字符串的函数。
addslashes()返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。
<?php
$str = "Is your name O'reilly?";
echo addslashes($str); // 输出:Is your name O\'reilly?
?>
stripslashes()本函数可去掉字符串中的反斜线字符。
若是连续二个反斜线,则去掉一个,
留下一个。
若只有一个反斜线,就直接去掉。
<?php
$str = "Is your name O\'reilly?";
echo stripslashes($str); // Outputs: Is your name O'reilly?
?>
4.2用字符串函数连接和分割字符串
4.2.1函数explode()、implode()、join()
explode() 原型explode ( string separator, string string [, int limit] )
此函数返回由字符串组成的数组,每个元素都是string 的一个子串,它们被字符串separator 作为边界点分割出来。
如果设置了limit 参数,则返回的数组包含最多limit 个元素,而最后那个元素将包含string 的剩余部分。
如果separator 为空字符串(""),explode() 将返回FALSE。
如果separator 所包含的值在string 中找不到,那么explode() 将返回包含string 单个元素的数组。
如果limit 参数是负数,则返回除了最后的-limit 个元素外的所有元素。
<?php
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
?>
<?php
$str = 'one|two|three|four';
(explode('|', $str, 2); // 正数的limit Array([0] => one [1] => two|three|four)
(explode('|', $str, -1); // 负数的limit Array([0] => one [1] => two [2]=>three)
?>
implode()、join():join是implode的别名。
string implode(string glue, array pieces);本函数将数组的内容组合成一个字符串,参数glue 是字之间的分隔符号。
<?php
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
echo $comma_separated; // lastname,email,phone
?>
4.2.2使用strtok()函数string strtok(string arg1, string arg2); 本函数将字符串arg1 依字符串arg2 的值切开成小段小段的字符串。
<?php
$string = "I will be back";
$tok = strtok($string," ");
while($tok)
{
echo "单字=$tok<br>";
$tok = strtok(" ");。