标题：PHP经典编程265例
图书详情
本书所精选的实例都是一线开发人员在实际项目中的积累，对这些实例进行了技术上的解析，并给出了详细的实现过程。读者通过对本书的学习，能够提高开发能力，积累开发经验。
本书提供了大量的源程序、素材，提供了相关的模块库、案例库、素材库、题库等多种形式辅助学习资料，还提供迅速及时的微博、QQ、论坛等技术支持。
本书内容详尽，实例丰富，非常适合作为零基础学习人员的学习用书和大中专院校师生的学习教材，也适合作为相关培训机构的师生和软件开发人员的参考资料。[1]
前言
学会站在巨人的肩膀上！
Web项目开发的终极目标是完成满足用户需求的项目。一个项目往往包含复杂的功能。作为一名程序员，需要在有限的时间内实现它们，这对于一名新手显然并不容易。为何有开发经验的程序员编程效率会非常高？答案就是他们做过类似的程序，通过适当修改雷同的代码满足当前的要求。因此，如何快速积累编程经验就成了新手的当务之急。显然，单单依靠项目来积累速度是非常慢的。
本书图文并茂、难易并举，汇集了265个日常开发中经常使用的实例，内容涵盖PHP语言Web项目开发的方方面面。每个实例分成实例说明、实现过程和技术要点3部分进行讲解。通过学习本书，不但能快速掌握相关知识点，还能逐步提高编程能力。
本书内容
本书以基础知识结构为框架，每一部分知识都有范例举证，不但是对基础知识的巩固，更能够体现基础知识在实战开发中的应用。全书分为16章，内容包括PHP基础、函数、PHP流程控制语句、Web技术、MySQL数据库、PHP数据库编程、字符串高级处理、PHP数组应用、日期和时间的处理、图形图像处理、文件目录处理、面向对象编程、PDO数据库抽象层、Smarty模板、ThinkPHP框架和PHP的字符编码。
为了更清晰地阐述问题和给出问题的解决方案，本书设置了以下栏目。
* 实例说明：详细描述本实例的用途，并给出实例的运行效果图。
* 实现过程：逐步讲解如何解决本实例的问题，并给出关键代码、注意事项等。
* 技术要点：对本实例使用的关键技术进行总结，方便日后使用。
本书特色
* 贴近应用。本书精选的实例都是真正来自开发一线。以实例的形式进行讲解，更容易被读者接受。
* 横向链接。本书知识框架与《PHP开发入门及项目实战》一书相对应，可以在使用《PHP开发入门及项目实战》一书进行基础学习之后，再用本书丰富并提高技能。
* 解析透彻。本书对每个问题的相关知识进行细致讲解，并进行知识拓展，使读者不仅知其然而且知其所以然。
* 授人以渔。本书在讲解技术的同时还注重对读者能力的培养，使读者掌握分析问题与解决问题的能力。
本书配套资源
本书提供了内容丰富的配套资源，包括源程序、素材，以及模块库、案例库、题库、素材库等多项辅助内容，读者朋友可以通过如下方式获取。
第1种方式：
（1）登录清华大学出版社的网站，在网页右上角的搜索文本框中输入本书书名（注意区分大小写和留出空格），或者输入本书关键字，或者输入本书ISBN号（注意去掉ISBN号间隔线“-”），单击“搜索”按钮。
（2）找到本书后单击超链接，在该书的网页下侧单击“网络资源”超链接，即可下载。
第2种方式：
访问本书的新浪微博PHPbook，找到配套资源的链接地址进行下载。
读者人群
本书非常适合以下人员阅读：
* 从事PHP语言编程行业的开发人员
* 有一定语言基础，想进一步提高技能的人员
* 大中专院校的老师和学生
* 即将走上工作岗位的大学毕业生
* 相关培训机构的老师和学员
* PHP语言编程爱好者[1]
目录
第1章PHP基础 1[2]
实例001 获取当前执行文件的名称 2
实例002 计算一个圆形的面积 3
实例003 当数字遇到字符串 4
实例004 通过转义字符输出特殊字符串 5
实例005 通过PHP5新型字符串动态输出JavaScript代码 6
实例006 比较两个时间戳的大小 7
实例007 判断数字的奇偶性 8
实例008 通过逻辑运算符判断用户的权限 9
实例009 获取2000～2020年中所有的闰年 10
实例010 自定义数字加密算法 11
实例011 随机输出字符串 12
实例012 在页面中打印服务器时间 13
实例013 区分单引号和双引号 15
实例014 前置运算符和后置运算符的区别 15
实例015 使用可变变量输出“I Like PHP!” 16第2章函数 18
实例016 自定义函数过滤字符串 19
实例017 获取上传文件的后缀 20
实例018 统一上传文件名称的大小写 21
实例019 论坛内容的简单输出 22
实例020 日期、时间的名称化输出 23
实例021 倒计时 24
实例022 中文图像验证码 26
实例023 上传文件到服务器 27
实例024 读取整个文本文件中的内容 29
实例025 连接MySQL数据库服务器 31
实例026 选择指定的MySQL数据库 32
实例027 执行SQL语句 34
实例028 文本文件分页读取 35
实例029 查询关键字描红 38
实例030 分页显示图书信息 39
实例031 一般用户注册 41
实例032 带检测用户名的用户注册 42
实例033 分步用户注册 45第3章PHP流程控制语句 47
实例034 员工生日提醒 48
实例035 SWITCH网页框架 49
实例036 员工信息的批量删除 51
实例037 do…while语句循环读取数据库中数据 52
实例038 生成随机验证码 53
实例039 图形计数器 55
实例040 包含数据库连接文件 57
实例041 健康生活提醒 58
实例042 if语句判断美女征婚条件 60
实例043 网页版九九乘法表 62
实例044 读取购物车中的数据 64
实例045 多图片上传 65
实例046 控制页面中表情图的输出 67
实例047 控制页面中数据的输出数量 68
实例048 考试成绩评定标准 69第4章Web技术 71
实例049 通过客户端IP限制投票次数 72
实例050 设计论坛登录界面 73
实例051 可以上传图片的表单 74
实例052 以文本域的形式显示数据信息 76
实例053 验证用户注册信息是否合理 77
实例054 省市级联动菜单 79
实例055 省市县级联动菜单 80
实例056 实现复选框中的全选、反选和不选 82
实例057 上传图片预览 84
实例058 通过下拉列表选择头像 86
实例059 日期选择器 87
实例060 在页面右下角弹出渐显的广告窗口 90
实例061 树形导航菜单 91
实例062 收缩式导航菜单 93
实例063 控制登录用户的过期时间 95
实例064 单点登录 97
实例065 统计用户在线时间 99
实例066 限制用户访问网站的时间 101
实例067 SESSION更换聊天室界面 102
实例068 掌控登录用户的权限 103
实例069 屏蔽页面刷新对计数器的影响 105
实例070 SESSION购物车 106
实例071 清理SESSION缓存提高网站访问的效率 109
实例072 限制上传文件的大小 111
实例073 限制上传文件的类型 113
实例074 通过链接方式下载 114
实例075 上传多个文件到服务器 115
实例076 通过header()函数进行下载 117
实例077 重新定义上传文件的名称 120第5章MySQL数据库 121
实例078 启动MySQL服务 122
实例079 连接MySQL服务器 122
实例080 关闭MySQL服务 123
实例081 创建PHP图书数据库 124
实例082 选择PHP图书数据库 125
实例083 删除PHP图书数据库 126
实例084 在PHP图书数据库中创建图书信息表 127
实例085 查看图书信息表 129
实例086 修改图书信息表 130
实例087 重命名图书信息表 131
实例088 删除图书信息表 132
实例089 向图书信息表中添加数据 132
实例090 修改图书信息表中的数据 133
实例091 删除图书信息表中所有数据 135
实例092 删除图书信息表中指定数据 136
实例093 通过phpMyAdmin修改MySQL用户密码 137
实例094 通过phpMyAdmin设置数据库、数据表编码 139
实例095 phpMyAdmin操作数据库 140
实例096 phpMyAdmin操作数据表 141
实例097 phpMyAdmin操作数据 143第6章PHP数据库编程 146
实例098 通过MySQL函数访问数据库 147
实例099 将数据以二进制形式上传到数据库 149
实例100 查询日期型数据 152
实例101 查询字符串 154
实例102 使用MySQL存储过程实现用户注册 155
实例103 使用MySQL事务处理实现银行安全转账 158
实例104 避免输出中文字符串时出现乱码 161
实例105 查询指定时间段的数据 162
实例106 查询从指定位置的前N条记录 164
实例107 通过PHP面向过程实现数据分页 165
实例108 通过PHP面向对象实现数据分页 170
实例109 查询结果不显示重复记录 173
实例110 Delete语句删除图书信息 174
实例111 对统计结果进行排序 175
实例112 使用select子句进行多表查询 177
实例113 合并多个结果集 178
实例114 简单的嵌套查询 179
实例115 用in查询表中的记录信息 180
实例116 使用聚集函数sum()对学生成绩进行汇总 182
实例117 使用聚集函数avg求学生的平均成绩 183
实例118 使用聚集函数min()求利润最少的商品 184
实例119 使用聚集函数max()求销售利润最高的商品 186
实例120 使用聚集函数count()求利润大于某值的数据 188
实例121 多表联合查询 189
实例122 left outer join查询 190
实例123 right outer join查询 191
实例124 利用transform分析数据 193
实例125 使用格式化函数转换查询条件的数据类型 194
实例126 在查询中使用日期函数 196
实例127 一般搜索 198
实例128 高级搜索 200
实例129 程序员搜索引擎 202第7章字符串高级处理 205
实例130 统计帖子标题的长度 206
实例131 购物车中数据的读取 206
实例132 查询关键字描红 208
实例133 统计查询关键字的出现次数 209
实例134 去除帖子标题的首尾空格 210
实例135 验证电话号码的格式是否正确 211
实例136 验证E-mail地址格式是否正确 212
实例137 超长文本的分页输出 213
实例138 统一上传文件名称的大小写 215
实例139 货币数据的格式化输出 216
实例140 统一英文注册用户首字母大小写 217
实例141 解决用substr()函数对中文字符串截取时乱码 218
实例142 将元素中指定位置的索引替换 219
实例143 统计数组元素的个数 220
实例144 去除数组中的重复元素 221
实例145 判断字符串中是否存在指定子串 222
实例146 合并数组 223
实例147 拆分数组 224
实例148 将时间和日期转换为时间戳 225
实例149 网页闹钟 226第8章PHP数组应用 228
实例150 查看最便宜的图书 229
实例151 随机抽取图书 229
实例152 车牌摇号 230
实例153 获取上传文件的数据 231
实例154 $_FILES[]全局数组在文件上传中的应用 232
实例155 图书信息逆向输出 233
实例156 统计图书的数量 234
实例157 获取图书馆中最受欢迎的3本图书 235
实例158 生成在线考试题 236
实例159 向购物车中添加商品 238
实例160 查看购物车 240
实例161 从购物车中移去指定商品 242
实例162 修改商品购买数量 243
实例163 清空购物车 244
实例164 收银台结账 245第9章日期和时间的处理 248
实例165 获取不同地区的当前时间 249
实例166 计算考试时间 250
实例167 输出中文格式的日期和时间 251
实例168 检验日期和时间的有效性 252
实例169 倒计时 253
实例170 判断时间的早晚 253
实例171 网页闹钟 254
实例172 计算程序的运行时间 255第10章图形图像处理 257
实例173 GD2函数填充几何图形 258
实例174 GD2函数在照片上添加文字 259
实例175 GD2函数为图片添加文字水印 261
实例176 GD2函数为图片添加图像水印 263
实例177 GD2函数生成图形验证码 264
实例178 折线图分析2010年的销售额 266
实例179 柱形图分析编程词典销售比例 268
实例180 饼形图分析2010年图书销量 269
实例181 GD2函数折线图分析网站月访问量走势 271
实例182 GD2函数柱状图分析编程词典满意度调查 273
实例183 GD2函数饼形图分析图书市场的份额 276
实例184 柱状图展示编程词典6、7月份销售量 278
实例185 柱状图展示编程词典上半年销量 280
实例186 折线图分析2010年牛肉市场价格走势 282
实例187 多饼形图区块分析2010年图书销量 283
实例188 缩略图艺术库 285
实例189 通过图像显示投票统计结果 288
实例190 通过图像显示密码安全强度 290
实例191 任意调整上传图片的大小 292第11章文件目录处理 295
实例192 文件操作汇总 296
实例193 文件类型检测 298
实例194 删除指定目录下的所有ini文件 301
实例195 重新定义目录的名称 302
实例196 获取磁盘分区的大小 304
实例197 遍历指定目录下的所有文件 306
实例198 可以屏蔽刷新功能的文本计数器 308
实例199 从文本文件读取注册服务条款 310
实例200 遍历、删除指定文件目录下的所有文件 311
实例201 文件属性分析 314
实例202 将文本文件中的内容存储到数据库中 315
实例203 判断文件是否被改动 318
实例204 目录操作汇总 319第12章面向对象编程 322
实例205 使用类的属性保存数据库连接参数 323
实例206 数据库连接类中定义数据库连接方法 325
实例207 数据统计类中定义求数值平方的方法 326
实例208 使用$this关键字调用汽车类自身的方法 328
实例209 学生类中使用构造方法为学生信息初始化 330
实例210 汽车类使用public关键字定义汽车的行驶方法 332
实例211 使用private关键字定义汽车的颜色属性 333
实例212 使用protected关键字定义汽车的保修年限 334
实例213 苹果子类继承水果父类 336
实例214 使用parent关键字调用父类的方法 338
实例215 苹果子类中覆盖水果父类中的方法 339
实例216 美食抽象类 340
实例217 学生类多重接口的实现 342
实例218 通过继承实现多态 344
实例219 通过接口实现多态 346
实例220 使用final关键字防止类被继承 347
实例221 使用static关键字定义类的静态成员 349
实例222 使用clone关键字实现对象的克隆 351
实例223 使用__set()方法为类中未经定义的属性赋值 352
实例224 使用__get()方法获取未声明属性的名称 355
实例225 使用__call()方法打印类中未定义方法的信息 356
实例226 使用__toString()方法将类的实例转化为字符串 357
实例227 使用__isset()方法提示未定义属性信息 359
实例228 使用单例模式制作数据库管理类 360
实例229 使用策略模式打印客户端浏览器类型 363
实例230 使用工厂模式设置用户访问权限 365第13章PDO数据库抽象层 369
实例231 连接MySQL数据库 370
实例232 连接MS SQL Server数据库 371
实例233 连接Oracle数据库 372
实例234 通过PDO向数据库中添加数据 373
实例235 通过PDO浏览数据库中的数据 374
实例236 通过PDO更新数据库中的数据 375
实例237 浏览客户留言 378
实例238 明日书店会员注册 379
实例239 添加留言信息 381
实例240 查询留言 382第14章Smarty模板 384
实例241 封装Smarty模板的配置方法 385
实例242 Smarty模板中日期、时间的格式化输出 387
实例243 Smarty模板中的编码 388
实例244 Smarty模板制作日期、时间选择器 390
实例245 通过Section循环输出数据 393
实例246 开启网站注册页面的缓存 395
实例247 通过配置文件定义变量 397
实例248 Smarty+ADODB完成数据的分页显示 399
实例249 Smarty模板中truncate()方法截取字符串 401
实例250 Register_function()方法注册模板函数 403
实例251 Smarty模板中的关键字描红技术 406
实例252 Smarty模板中生成数字验证码 408第15章ThinkPHP框架 410
实例253 用户信息的查询、更新和删除 411
实例254 用户登录和数据的分页输出 415
实例255 通过验证码类和分页类完成用户登录和分页输出 419
实例256 通过ThinkPHP中的扩展类生成中文验证码 423
实例257 可以传递查询条件的分页 424
实例258 应用ThinkPHP中的扩展类上传文件 427第16章PHP的字符编码 431
实例259 设计GB2312编码格式的网页 432
实例260 设计GBK编码格式的网页 433
实例261 设计UTF-8编码格式的网页 434
实例262 通过iconv()函数实现编码格式的转换 435
实例263 避免截取超长文本时出现乱码 436
实例264 对输出的数据进行编码格式转换 438
实例265 论坛中控制帖子标题输出的长度 439[2]