定义和用法

addslashe()函数 使需要让数据库处理的字符串,引号的部份加上斜线,以供数据库查询 (query) 能顺利运作。这些会被改的字符包括单引号 (')、双引号 (")、反斜线 backslash (\) 以及空字符 NUL (the null byte)。

语法:

addslashe(string)

参数:

string: 必须.是规定要检测的字符串.

举例:

<?php

echo addslashe("Who's Yaping Song?");

?>

输出:

Who\'s Yaping Song



定义和用法

stripslashes() 函数删除由addslashe()函数添加的反斜杠。该函数用于清理从数据库或 HTML 表单中取回的数据。

语法:

stripslashes(string)

参数:

string: 必须.是规定要检测的字符串.

举例:

<?php

echo stripslashes("Who\'s Yaping Song?");

?>

输出:

Who's Yaping Song?




定义和用法:

ucwords()函数 把字符串的每个单词的首字母转换成大写字母,非字母字符不受影响.

语法:

ucwords(string)

参数:

string     必需,要进行转换的字符串.

举例:

<?php

echo ucfirst("welcome to PHP wzd");      // 此时输出: Welcome To PHP Wzd

?>


定义和用法:

ucfirst()函数 把字符串的第一个字母转换成大写,非字母字符不受影响.

语法:

ucfirst(string)


参数:
string     必需,要进行转换的字符串.

举例:

<?php

echo ucfirst("welcome to PHP wzd");      // 此时输出: Welcome to PHP wzd

?>


定义和用法:

strtoupper()函数 把字符串的字母全部转换成大写字母

语法:

strtoupper(string)

参数:

string      必需,要进行转换的字符串.


举例:

<?php

echo strspn("PHP我知道");      // 此时输出: php我知道

?>


定义和用法:

strtolower()函数 把字符串的字母全部转换为小写字母.

语法:

strcasecmp(string)

参数:

string     必需,用于转换的字符串.


举例:

<?php

echo strtolower("PHP WZD",);      // 此时输出: php wzd

?>



定义和用法:

strcspn()函数 返回string1中连续不匹配string2的长度

语法:
strcspn(string1,string2,start,length)

参数:

string1      必需,规定要比较的第一个字符串.

string2      必需,规定要比较的第二个字符串.

start         可选,用来指定开始位置(默认为0)

length       可选,用来指定搜索长度(默认为string1的长度-1)


举例:

<?php

echo strcspn("PHPwzd","abcdef");       // 此时输出5

echo strcspn("a01245","0123456"); // 此时输出1

echo strcspn("my qq number is 274682778","123456789");       // 此时输出16

?>


定义和用法:

strspn() 函数 返回string1中连续匹配string2的长度.

语法:

strspn(string1,string2,start,length)

参数:

string1      必需,规定要比较的第一个字符串.

string2      必需,规定要比较的第二个字符串.

start         可选,用来指定开始位置(默认为0)

length       可选,用来指定搜索长度(默认为string1的长度-1)


举例:

<?php

echo strspn("PHP wzd","PHPwzd");     // 此时输出3

echo strspn("faooaaol","ao",1,4); // 此时输出4

echo strspn("foo","o",1,2);     // 此时 输出2

?>

​PHP strcasecmp()函数​


定义和用法:

strcasecmp()函数比较两个字符串.(不区分大小写,类似于strcmp())


该函数返回:


  • 0 - 如果两个字符串相等
  • <0 - 如果 string1 小于 string2
  • >0 - 如果 string1 大于 string2

语法:

strcasecmp(string1,string2)

参数:

举例:

<?php

echo strcasecmp("PHP我知道","php我知道");

?>

输出:

0

​PHP strcmp() 函数​


定义和用法

strcmp() 函数比较两个字符串。(区分大小写,与strcasecmp()函数相似.)

该函数返回:


  • 0 - 如果两个字符串相等
  • <0 - 如果 string1 小于 string2
  • >0 - 如果 string1 大于 string2

语法:

strcmp(string1,string2)

参数:

举例:

<?php

echo strcasecmp("PHP我知道","php我知道");

?>

输出:

-1

​PHP strlen()函数​


定义和用法

strlen() 函数返回字符串的长度。

语法:

strlen(string)

参数:

举例:

<?php

echo strlen("PHP 我知道!");

?>

输出:

11

​PHP strpos() 函数​


定义和用法:

strpos() 函数返回字符串在另一个字符串中第一次出现的位置。如果没有找到该字符串,则返回 false。

语法:

strpos(string,find,start)

参数:

string: 必需。规定被搜索的字符串。

find: 必需。规定被搜索的字符串。

start: 可选。规定开始搜索的位置。

举例:

<?php

echo strpos("Hello world!","wo");

?>

输出:

6

​PHP str_replace() 函数​


定义和用法

str_replace() 函数使用一个字符串替换字符串中的另一些字符。

语法:

str_replace(find,replace,string,count)

参数:

find: 必需。规定要查找的值。

replace: 必需。规定替换 find 中的值的值。

string: 必需。规定被搜索的字符串。

count: 可选。一个变量,对替换数进行计数。

举例:

<?php

echo str_replace("world","John","Hello world!");

?>

输出:

Hello John!



​PHP strtotime()函数​


定义和用法:

strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。

语法:

strtotime(time,now)

参数:

time

必须,规定要解析的时间字符串。

now

可选,用来计算返回值的时间戳。如果省略该参数,则使用当前时间。

举例:

<?php

echo date("d-M-y", strtotime ("tomorrow"));                        //输出: 4-Sep-08

echo date("d-M-y", strtotime ("today"));                             //输出: 3-Sep-08

echo date("d-M-y", strtotime ("today+3 days"));                //输出: 6-Sep-08

?>

​PHP checkdate() 函数​


定义和用法:

checkdate() 函数 验证一个格里高里日期。如果指定的值合法,则该函数返回 true,否则返回 false。

语法:

checkdate(month,day,year)

参数:

month

必需。规定月。

day

必需。规定日。

year

必需。规定年。

举例:

<?php

echo   checkdate(2,31,2008)?"true":"false";               //输出: false

echo   checkdate(2,29,2008)?"true":"false";              //输出: true

echo   checkdate(1,1,2008)?"true":"false";                //输出: true

?>

​PHP gmdate() 函数​


定义和用法:

gmdate() 函数 函数格式化 GMT/UTC 日期/时间。同date() 函数类似,不同的是返回的时间是格林威治标准时(GMT)。

语法:

gmdate(format,timestamp)

参数:

format

可选。规定如何返回结果。

timestamp

可选。

举例:(假设现在的时间为:2008-11-04 09:40:17 )

<?php

echo date("M d Y H:i:s", mktime (0,0,0,1,1,2000));                //输出: Jan 01 2000 00:00:00

echo gmdate("M d Y H:i:s", mktime (0,0,0,1,1,2000));            //输出: Dec 31 1999 16:00:00

echo gmdate("Y-n-d H:i:s",time()+8*3600);                           //输出:2008-11-04 09:40:17

?>

​PHP Date() 函数​


定义和用法:

PHP Date() 函数返回指定格式的时间。

语法:

date(format,timestamp)

参数:

format

必需。规定时间戳的格式。

timestamp

可选。规定时间戳。默认是当前的日期和时间。

举例:(假如今天是2008年01月10日)

<?php

echo date("Y/m/d");         //此时输出: 2008/01/10

echo "<br />";

echo date("Y.m.d");        //此时输出: 2008.01.10

echo "<br />";

echo date("Y-m-d");       //此时输出: 2008-01-10

?>

​PHP SESSION的使用​


<?php

//首先是启动SESSION

session_start();

$userID="PHPwzd";

$_SESSION['admin']=true;        

$_SESSION['SID']=$ID;

$lifeTime =4*3600;    //设置SESSION的生命周期为4小时

setcookie(session_name(), session_id(), time() + $lifeTime, "/");

?>


<?PHP

//然后就是检测SESSION

session_start();

if (!( isset($_SESSION['admin']) AND $_SESSION['admin']==true) ) {

echo "没有启动SESSION";

} else {

echo $_SESSION['SID'];

}

?>


大家都公认的经验: 在使用SESSION时,前面不要有任何输出;我个人建议大家把session模块放在一个单独的页面,因为SESSION会和HTML中head互相冲突的.

​PHP中$_SERVER的详细参数与说明​


PHP编程中经常需要用到一些服务器的一些资料,特把$_SERVER的详细参数整理下,方便以后用到,以后搜索方便

$_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关。

$_SERVER['argv'] #传递给该脚本的参数。

$_SERVER['argc'] #包含传递给程序的命令行参数的个数(如果运行在命令行模式)。

$_SERVER['GATEWAY_INTERFACE'] #服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。

$_SERVER['SERVER_NAME'] #当前运行脚本所在服务器主机的名称。

$_SERVER['SERVER_SOFTWARE'] #服务器标识的字串,在响应请求时的头部中给出。

$_SERVER['SERVER_PROTOCOL'] #请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。

$_SERVER['REQUEST_METHOD'] #访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。

$_SERVER['QUERY_STRING'] #查询(query)的字符串。

$_SERVER['DOCUMENT_ROOT'] #当前运行脚本所在的文档根目录。在服务器配置文件中定义。

$_SERVER['HTTP_ACCEPT'] #当前请求的 Accept: 头部的内容。

$_SERVER['HTTP_ACCEPT_CHARSET'] #当前请求的 Accept-Charset: 头部的内容。例如:“iso-8859-1,*,utf-8”。

$_SERVER['HTTP_ACCEPT_ENCODING'] #当前请求的 Accept-Encoding: 头部的内容。例如:“gzip”。

$_SERVER['HTTP_ACCEPT_LANGUAGE']#当前请求的 Accept-Language: 头部的内容。例如:“en”。

$_SERVER['HTTP_CONNECTION'] #当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。

$_SERVER['HTTP_HOST'] #当前请求的 Host: 头部的内容。

$_SERVER['HTTP_REFERER'] #链接到当前页面的前一页面的 URL 地址。

$_SERVER['HTTP_USER_AGENT'] #当前请求的 User_Agent: 头部的内容。

$_SERVER['HTTPS'] — 如果通过https访问,则被设为一个非空的值(on),否则返回off

$_SERVER['REMOTE_ADDR'] #正在浏览当前页面用户的 IP 地址。

$_SERVER['REMOTE_HOST'] #正在浏览当前页面用户的主机名。

$_SERVER['REMOTE_PORT'] #用户连接到服务器时所使用的端口。

$_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名。

$_SERVER['SERVER_ADMIN'] #管理员信息

$_SERVER['SERVER_PORT'] #服务器所使用的端口

$_SERVER['SERVER_SIGNATURE'] #包含服务器版本和虚拟主机名的字符串。

$_SERVER['PATH_TRANSLATED'] #当前脚本所在文件系统(不是文档根目录)的基本路径。

$_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用。

$_SERVER['REQUEST_URI'] #访问此页面所需的 URI。例如,“/index.html”。

$_SERVER['PHP_AUTH_USER'] #当 PHP 运行在Apache模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。

$_SERVER['PHP_AUTH_PW'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。

$_SERVER['AUTH_TYPE'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型

​PHP in_array()函数​


定义和用法

in_array() 函数在数组中搜索给定的值。

语法

in_array(value,array,type)

参数

value 必需。规定要在数组搜索的值。

array 必需。规定要搜索的数组。

type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。

说明

如果给定的值 value 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。

如果没有在数组中找到参数,函数返回 false。

注释:如果 value 参数是字符串,且 type 参数设置为 true,则搜索区分大小写。

举例:

<?php

$people = array("Peter", "Joe", "Glenn", "Cleveland", 23);


if (in_array("23",$people, TRUE)){


    echo "Match found<br />";

} else {

   echo "Match not found<br />";

}

if (in_array("Glenn",$people, TRUE)) {

   echo "Match found<br />";

} else {

   echo "Match not found<br />";

}

if (in_array(23,$people, TRUE)) {


   echo "Match found<br />";

} else {


   echo "Match not found<br />";

}

?>

输出:

Match not found

Match found

Match found

​PHP和结合HTML实现页面重定向​


不知道为什么,最近对Discuz很感兴趣,想了解一下Discuz先进的编程思想和数据库构架思想.

今天看到了Discuz用PHP和结合HTML实现页面重定向的一个语句.从来没有看到过.

哈哈,贴在上面大家一起分享

<?php

$url_forward="http://hi.baidu.com/phpwzd";

echo "<meta http-equiv=refresh content=\"5;URL=$url_forward\">";

?>

​PHP代码优化40则​

1.如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。


2.echo 比 print 快。


3.使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。


4.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。


5.注销那些不用的变量尤其是大数组,以便释放内存。


6.尽量避免使用__get,__set,__autoload。


7.require_once()代价昂贵。


8.在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。


9.如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。


10.函数代替正则表达式完成相同功能。


11.str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。


12.如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。


13.使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。


14.用@屏蔽错误消息的做法非常低效。


15.打开apache的mod_deflate模块。


16.数据库连接当使用完毕时应关掉。


17.$row[‘id’]的效率是$row[id]的7倍。


18.错误消息代价昂贵。


19.尽量不要在for循环中使用函数,比如for ($x=0; $x < count($array); $x)每循环一次都会调用count()函数。


20.在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。


21.递增一个全局变量要比递增一个局部变量慢2倍。


22.递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。


23.递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。


24.仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP大概会检查看是否存在全局变量。


25.方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。


26.派生类中的方法运行起来要快于在基类中定义的同样的方法。


27.调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。


28.用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会。当然,只有当你不需要在字符串中包含变量时才可以这么做。


29.输出多个字符串时,用逗号代替句点来分隔字符串,速度更快。注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。


30.Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。


31.除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销。


32.尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码 (OP code)的缓存很有用,使得脚本不必为每个请求做重新编译。


33.当操作字符串并需要检验其长度是否满足某种要求时,你想当然地会使用strlen()函数。此函数执行起来相当快,因为它不做任何计算,只返回在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用isset() 技巧加速执行你的代码。


(举例如下)

if (strlen($foo) < 5) { echo "Foo is too short"$$ }

(与下面的技巧做比较)

if (!isset($foo{5})) { echo "Foo is too short"$$ }


调用isset()恰巧比strlen()快,因为与后者不同的是,isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中你没有花太多开销。


34.当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言,所以请不要修改你的C或Java代码并指望它们能立即变快,没用的。++$i更快是因为它只需要3条指令(opcodes),$i++则需要4条指令。后置递增实际上会产生一个临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种,正如Zend的PHP优化器所作的那样。牢记这个优化处理不失为一个好主意,因为并不是所有的指令优化器都会做同样的优化处理,并且存在大量没有装配指令优化器的互联网服务提供商(ISPs)和服务器。


35.并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。


36.并非要用类实现所有的数据结构,数组也很有用。


37.不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码?


38.当你需要时,你总能把代码分解成方法。


39.尽量采用大量的PHP内置函数。


40.如果在代码中存在大量耗时的函数,你可以考虑用C扩展的方式实现它们。


41.评估检验(profile)你的代码。检验器会告诉你,代码的哪些部分消耗了多少时间。Xdebug调试器包含了检验程序,评估检验总体上可以显示出代码的瓶颈。


42.mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低80%。

imagesx和imagesy

<?php

  • //载入图片
  • $filename = 'pic.jpg';
  • //取得图形的宽
  • echo "图形宽度为:".imagesx($filename);
  • //取得图形的高
  • echo "图形高度为:".imagesy($filename);
  • //销毁图片
  • imagedestroy($image);
  • ?>