《PHP和MySQL Web开发》读书笔记(上篇)

最近过得太浮躁了,实在自己都看不下去了,看了PHP圣经之后,觉得非常有必要要总结一下。

Chapter1.快速入门

·PHP标记:总共有三种风格,常用的还是XML风格为主

<?php echo '<p>Hello PHP!</p>'; ?>

·单引号和双引号对变量显示的影响
在双引号中,变量名称将被变量值所替代,而在单引号中,变量名称,或者任何其他文本都会不经修改而发送给浏览器。考虑以下代码:

1 <?php
2 $num = 3;
3 echo "<p>$num</p>";
4 echo '<p>$num</p>';
5 ?>

显示:

·字符串的连接(沿用python等脚本语言的风格)

<?php echo "<p>".'Hello'."</p>"; ?>

·超级全局变量的种类:
·$_GLOBALS —— 所有全局变量数组

·$_SERVERS —— 服务器环境变量数组(比如php.ini里面的配置信息)

·$_GET —— 通过GET方法传递给脚本的变量数组(通过地址栏传地址等等)

·$_POST —— 通过POST方法传递给脚本的变量数组(主要接触的目前只有表单)

·$_COOKIE —— cookie(缓存)变量数组(目前还没用过)

·$_FILES —— 与文件上传相关的变量数组

·$_REQUEST —— 所有用户输入的变量数组,包括$_GET,$_POST和$_COOKIE所包含的输入内容

·测试变量的状态

比较常用的函数有isset,empty,以及unset函数

·isset判断变量是否存在,empty可以判断检查一个变量是否存在,以及它的值是否为非空和非0,而unset函数能够销毁一个变量。

·对于条件选择结构:if(...){...}elseif(...){...} (else和if是连在一块)

 Chapter2.文件读和写

文件读写有下面几个步骤:

·打开文件 ·创建并写入文件 ·给文件加锁 ·读文件或写文件 ·关闭文件  ·删除文件

写文件的典型例子:

 1 <?php
 2 $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];  //获取www的决定路径
 3 $str = "123";
 4 @ $fp = fopen("$DOCUMENT_ROOT/../string/123.txt",'ab');  //打开文件
 5 
 6 flock($fp,LOCK_EX);  //给文件加锁,取得独占
 7 
 8 fwrite($fp,$str,len($str));  //写文件
 9 
10 flock($fp,LOCK_UN);  //给文件解锁
11 
12 fclose($fp);   //关闭文件
13 
14 ?>
View Code

读文件的典型例子:

 1 <?php
 2 $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
 3 
 4 @$fp = fopen("$DOCUMENT_ROOT/../123/123.txt",'rb');  //打开文件
 5 
 6 while(!feof($fp))
 7 {
 8       $order = fgets($fp,999);    //文件
 9       echo $order."<br />";
10 }
11  
12 //读文件时不需要锁定文件
13 fclose($fp);
14 
15 ?>
View Code

 详细的还是查查手册吧,诸如什么file_exist() , unlink() 都挺重要的。

Chapter3.使用数组

·首先有个array()的构造函数。

·比较多有用的函数(其实跟其他语言的数组差不多啊):sort(),shuffle(),array_reverse(),count(),file()(将文件载入一个数组里面,其中以空格分隔开)

详细的还是查一下手册吧。

Chapter4.字符串操作与正则表达式

关于字符串格式化的函数:

·trim()函数用来整理用户输入的数据,包括除去换行符和回车符(\n和\r),水平和垂直制表符(\t),字符串结束符和空格(\0)

$name = trim($_POST['name']);

 ·nl2br()函数使用HTML格式化,如果不用的话,输出到浏览器会除掉中间空格。

 

1 <p>Your feedback has been sent.</p>
2 <p><?php echo nl2br($mailcontent); ?></p>

·格式化字符串以便存储——addslashes()函数,以便数据存入数据库

 

$feedback = addslashes(trim($feedback));

 

·explode()函数——字符串的分割,PHP5已经开始沿用这个函数来进行字符串的分割成数组,原型如下:

 

array explode ( string $delimiter , string $string [, int $limit ] )

·join()函数 —— 字符串的连接

·strtok()函数

 

string strtok ( string $str , string $token )

 

string strtok ( string $token )

 

strtok() 将字符串 str 分割为若干子字符串,每个子字符串以 token 中的字符分割。这也就意味着,如果有个字符串是 "This is an example string",你可以使用空格字符将这句话分割成独立的单词。

注意仅第一次调用 strtok 函数时使用 string 参数。后来每次调用 strtok,都将只使用 token 参数,因为它会记住它在字符串 string 中的位置。如果要重新开始分割一个新的字符串,你需要再次使用 string 来调用 strtok 函数,以便完成初始化工作。注意可以在 token 参数中使用多个字符。字符串将被该参数中任何一个字符分割。

 

 

·strtr()函数与strpos()函数——查找子字符串的位置

·strstr()函数的介绍

 

string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )

 

返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。

 

Note:

该函数区分大小写。如果想要不区分大小写,请使用 stristr()

 

Note:

如果你仅仅想确定 needle 是否存在于 haystack 中,请使用速度更快、耗费内存更少的 strpos() 函数。

 

示例:

1 <?php
2 $email  = 'name@example.com';
3 $domain = strstr($email, '@');
4 echo $domain; // 打印 @example.com
5 
6 $user = strstr($email, '@', true); // 从 PHP 5.3.0 起
7 echo $user; // 打印 name
8 ?>
View Code

·strpos()函数的介绍

 

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

 

返回 needle  haystack 中首次出现的数字位置。与 strrpos() 不同,在 PHP 5 之前,该函数可以使用一个完整字符串作为needle,并且整个字符串都将被使用。

·正则表达式的介绍——呃,这个在Python已经常见了,在这就不怎么介绍了。就介绍ereg()和eregi()(后者不区分大小写)

 

int ereg ( string $pattern , string $string [, array &$regs ] )

 

Note:

使用 Perl 兼容正则表达式语法的 preg_match() 函数通常是比 ereg() 更快的替代方案。

 

以区分大小写的方式在 string 中寻找与给定的正则表达式 pattern 所匹配的子串。

 

如果找到与 pattern 中圆括号内的子模式相匹配的子串并且函数调用给出了第三个参数 regs,则匹配项将被存入 regs 数组中。$regs[1] 包含第一个左圆括号开始的子串,$regs[2] 包含第二个子串,以此类推。$regs[0] 包含整个匹配的字符串。

如果在 string 中找到 pattern 模式的匹配则返回 所匹配字符串的长度,如果没有找到匹配或出错则返回 FALSE。如果没有传递入可选参数 regs 或者所匹配的字符串长度为 0,则本函数返回 1。

示例:

 

1 <?php
2 if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) {
3     echo "$regs[3].$regs[2].$regs[1]";
4 } else {
5     echo "Invalid date format: $date";
6 }
7 ?>
View Code

 

·更多的还是去翻翻手册吧,不方便详细聊。

 

 

Chapter5.代码重用和函数编写

·代码重用的思想在软件工程上经常有所体现,多写写大概就能够领会这种思想了,包括在github的一些开源项目,也是体现代码重用的思想。

·一般的PHP项目当中,会经常新建这样的一个.php文件作为函数库,以便于后面的页面用到这些函数时能够方便调用。

·函数重用,经常使用的函数有require()和include()函数,其变形分别为:require_once()函数和include_once()函数,后者确保一个包含的文件只能被引入一遍。

·关于函数中使用全局变量的方法——关键字global

 

1 function fn(){
2    global $var;
3    $var = "contents";
4    echo "<p>$var</p>";
5 }

 

基本上就这些,PHP其实面对过程的特点更其他语言差不多。

Chapter6.面向对象的PHP

·关于面向对象这一块,我由于水平有限,所以目前写的代码没怎么用到类,代码也没怎么体现面向对象的思想,所以也无法总结出一些有价值的东西。但是以我之见,面向对象主要还是理解类与对象,继承,派生以及多态等东西吧。更多的还得在后续学习提升自己。

Chapter7.错误和异常处理

没总结。。。。。。

 

请多多指教!

posted @ 2013-11-30 17:21  中大黑熊  阅读(569)  评论(0编辑  收藏  举报