php基础语法

php基础教程 (PHP for the Web: Visual QuickStart Guide (4th Edition) )
此文只是上书的阅读笔记,不适合他人做参考学习.
本书进阶版:PHP与MySQL动态网站开发(第4版)(同一作者)

1 变量名

所有的变量名必须以美元符号($)开头;
在美元符号后的第一个字符必须为字母(A~Z,a~z)或者下划线(),不能使用数字;
所有的变量名必须以美元符号($)开头; •在美元符号后的第一个字符必须为字母(A~Z,a~z)或者下划线(
),不能使用数字;

2 索引数组 关联数组

数组使用键来创建和检索它们保存的值,其结果构成为一系列键-值对,看上去像是一个两列的数据表。有趣的是,在PHP中的数组结构非常灵活,它的键和值都可以使用数值或者字符串类型。数组甚至不必在此方面保持一致性(在第7章接触到具体示例时,你就会明白这里所说的意思)。

PHP有两种数组类型,区别在于键的格式。如果一个数组使用数值作为键(参见表2-5)那么它就是索引数组,如果它使用字符串作为键(参见表2-6),那么就是关联数组。在任何一种情况下,数组中的值都可以是任何变量类型(字符串、数值或者其他类型)。

3理解引号

PHP允许使用单引号(')和双引号("),但是它们将导致截然不同的结果。理解这一点是非常重要的,因此在接下来的示例中将演示使用这两种引号的区别。

规则描述如下:使用单引号引用的内容将照字面意思进行处理,而被双引号引用的内容需要进行推断。也就是说,双引号引用的变量名将被它的值所替代,正如在脚本2-3中看到的那样。但单引号引用的变量名不会被替代。

4GET 和 POST

GET和POST之间的区别在于将信息从表单向处理信息的脚本传递的方式。

GET将所有的信息聚集起来并作为URL的一部分进行传递,而POST并不让用户看到传递的信息。

一般来说,从服务器上请求信息时,使用GET请求。几乎所有用于搜索的页面都会使用GET(当你使用搜索引擎时,看一下它的URL),就像那些分页显示结果的页面一样(比如分类浏览产品)。相反,POST一般用于触发基于服务器的行为,比如提交一张联系表(发送Email)或提交某个博客的评论(评论添加到数据库和该博客的页面上)。

无论表单使用什么method,你都可以在预定义的$_REQUEST变量中访问表单数据。然而,$_GET和$_POST更明确,所以更可取。

5表单

表单最重要的两个元素 action method

6格式化数值

有两个函数适合达到格式化数值的目的。
第一个是round(),它用于对数值截取特定位数的小数。函数的第一个参数是需要格式化的数值,它既可以是一个数字,也可以是一个存有数值的变量。第二个参数是可选的,它代表需要取的小数位数。例如:round (4.30); // 4
round (4.289, 2); // 4.29
$num = 236.26985;
round ($num); // 236

另外一个可以用来格式化数值的函数是number_format()。number_format()同round()的工作方式类似,它有一个数值参数(或者有数字值的变量)以及一个可选的小数位数指定参数。这个函数通过千位分组来格式化数字,格式化的效果通常如下所示:
number_format (428.4959, 2); // 428.50
number_format (428, 2); // 428.00
number_format (123456789); // 123,456,789

出于一些复杂的原因,round()函数对于“精确”半数的情况(0.5、0.05、0.005等),舍去和进上的次数是一半对一半,四舍六入五成双.

number_format()函数接受两个可选参数,这两个参数分别用来指定使用什么字符代表小数点位数和千分号。这是非常有用的,例如,在某些文化的习惯中,将1 000.89写为1.00089。如果希望使用这些选项,请参看PHP手册中相关的语法描述。

7n12br 处理换行符

字符串中的换行符通常给PHP开发新手带来一些问题。用户可以在textarea表单元素中用敲击Return或者Enter的方式输入多行文本。每次敲击Return或者Enter的结果在字符串中都相当于产生一个换行符。这些换行符在textarea中会起作用,但是在PHP页面呈现中将不会产生任何效果.

8 HTML和PHP (PHP是一项被频繁用来向Web浏览器发送数据的服务器端技术)

数据将从一个HTML表单中输入,然后使用PHP在Web浏览器上打印出来。一个潜在的问题是,用户可以在表单中输入HTML字符,这将会对页面的格式产生影响,或许还会导致更糟的结果,从而引发安全方面的问题。
可以使用一些PHP函数来处理PHP字符串变量中的HTML标签。
•htmlspecialchars()将特定的HTML标签转换为实体版本。
•htmlentities()将所有的HTML标签转换为实体版本。
•strip_tags()移除所有的HTML和PHP标签。

9 字符串的编码和解码

urlencode()函数可以通过URL安全地将任意值传送到PHP脚本。顾名思义,这个函数接受一个字符串,并对之编码(en-code)(改变它的格式),以便它完全适合作为URL的一部分传输。这个函数用加号(+)替换掉空格,并且将特殊字符(如省略号)转换为较少出现问题的形式。

从表单直接发送的值,在被发送之前会自动进行URL—编码,接收脚本收到后再对其进行解码。

10字符串的加密和解密

可以使用crypt()函数来对数据进行加密,但是请注意没有解密选项可用(它是一种单向加密方式)。因此,可以用它来对密码进行加密并且保存,但是无法确定解码值。在Web应用程序中使用这个函数,可以在注册的时候对用户密码进行加密,然后当用户登录时,他们输入的密码同样会被加密,并且会对密码的两个加密版本进行对比。crypt()的语法如下:$data = crypt($data);

如果数据被存储在数据库中,也可以使用数据库应用程序(例如MySQL、PostgreSQL、Oracle或者SQL Server)中的内置函数来执行加密和解密。大多数技术都提供单向或者双向的加密工具,但还取决于你所使用的技术。

11创建模板,使用外部文件

可以将页面划分成特定的元素,然后使用特定的函数将它们合并到主PHP页面中,这样可以节省开发时间。需要使用的函数有include()和require():
include ('file.php'); 警告
require ('file.html');终止

这两个函数的工作方式相同,它们的区别也不是很大:如果include()函数失败了,PHP脚本会生成一个警告(参见图8-7),但继续运行。相反,如果require()失败了,它会终止脚本的执行

12常量

define();

13时间

date()函数可以接受另一个参数,这个参数称作时间戳(timestamp)。
时间戳是一个数字,表示从1970年1月1日午夜起计算的秒数——这一时刻也称作epoch。
time()函数可以返回当前时刻的时间戳。
mktime()函数可以返回一个给定的时间和日期的时间戳:
mktime(hour, minute, second, month, day, year);
因此下面的代码:$ts = mktime(12, 30, 0, 11, 5, 2011);
可以将从epoch到2011年11月5日12:30经过的秒数赋值给$ts变量。这个数值可以传递给date()函数,如下所示:date('D', $ts);这会返回Sat,它是用3个字母表示的一周中的某一天。

由于PHP是一种服务器端的技术,因此这些函数反映的是服务器上的日期和时间。要获取客户端(换句话说,就是用于浏览页面的Web浏览器所在的计算机)的时间,则必须使用JavaScript。

14使用一个php脚本完成表单处理所有流程

浏览器第一次访问login.php是GET请求.
login.php提交表单给自己是POST请求.
判别请求方式语句:$_SERVER['REQUEST_METHOD'] == 'POST'

15输出缓冲

要启用输出缓冲,请在页面的最顶端使用ob_start()函数。
在脚本的结尾处,调用ob_end_flush()函数,将积累下来的缓冲发送到Web浏览器。
或者,可以使用ob_end_clean()函数删除缓冲的数据而不进行传输。
这两个函数都会为当前脚本关闭输出缓冲。

16处理HTTP头

除了发送HTML、图片等信息外,Web服务器通常需要用其他一些方式与客户端通信。这些额外的通信需要使用HTTP头实现。

17 函数返回多个值

返回数组 小米阅读 583 网页版

18 文件

在创建可写文件和目录时,将它们放在Web根目录之外会更安全。换句话说,如果Web页面放置在C:\inetpub\wwwroot或/Users/username/Sites中,此时,如果你将项目放置在C:\inet-pub或/Users/username中,这些项目可以被本地运行的PHP访问到,但不能通过Internet访问。本章中的示例都遵从这种结构,你也应该严格遵守。

写入文件最简单的方式是使用file_put_contents()函数

PHP专用的常量PHP_EOL,表示当前操作系统的换行符

如果需要将新内容追加到文件中,加入FILE_APPEND常量作为第三个参数:
file_put_contents($file, $data, FILE_APPEND);

如果正在运行的PHP版本是安全模式的,或设置了open_basedir指令,则在使用PHP访问文件和目录时会受到一些限制。请使用phpinfo()函数来查看服务器上的这些设置。

  • 读取文件
    使用file_get_contents()会将文件中的所有内容按照一个字符串来读取:$data = file_get_contents($file);
    如果文件每一行都有一些数据,就像例子中的quotes.txt,最好使用file()函数:$data = file($file);file()函数是PHP中非常有价值的一个内置工具。与file_get_contents()不同,它读取文件中的所有内容并将这些信息放置在一个数组中。数组的每个元素都包含了文件中的一行,这些行是用换行符(\n或\r\n)分隔的。

+文件上传
为了让用户能够上传文件,必须对标准的HTML表单作出3处更改。首先,初始form标签必须包含代码enctype="multipart/form-data",让浏览器知道表单数据将具备不同的类型:<form action="script.php" enctype="multipart/form-data" method="post">表单必须使用POST方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容