定义和用法
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
?>
定义和用法:
strcasecmp()函数比较两个字符串.(不区分大小写,类似于strcmp())
该函数返回:
- 0 - 如果两个字符串相等
- <0 - 如果 string1 小于 string2
- >0 - 如果 string1 大于 string2
语法:
strcasecmp(string1,string2)
参数:
举例:
<?php
echo strcasecmp("PHP我知道","php我知道");
?>
输出:
0
定义和用法
strcmp() 函数比较两个字符串。(区分大小写,与strcasecmp()函数相似.)
该函数返回:
- 0 - 如果两个字符串相等
- <0 - 如果 string1 小于 string2
- >0 - 如果 string1 大于 string2
语法:
strcmp(string1,string2)
参数:
举例:
<?php
echo strcasecmp("PHP我知道","php我知道");
?>
输出:
-1
定义和用法
strlen() 函数返回字符串的长度。
语法:
strlen(string)
参数:
举例:
<?php
echo strlen("PHP 我知道!")
;
?>
输出:
11
定义和用法:
strpos() 函数返回字符串在另一个字符串中第一次出现的位置。如果没有找到该字符串,则返回 false。
语法:
strpos(string,find,start)
参数:
string: 必需。规定被搜索的字符串。
find: 必需。规定被搜索的字符串。
start: 可选。规定开始搜索的位置。
举例:
<?php
echo strpos("Hello world!","wo")
;
?>
输出:
6
定义和用法
str_replace() 函数使用一个字符串替换字符串中的另一些字符。
语法:
str_replace(find,replace,string,count)
参数:
find: 必需。规定要查找的值。
replace: 必需。规定替换 find 中的值的值。
string: 必需。规定被搜索的字符串。
count: 可选。一个变量,对替换数进行计数。
举例:
<?php
echo str_replace("world","John","Hello world!")
;
?>
输出:
Hello John!
定义和用法:
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
?>
定义和用法:
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
?>
定义和用法:
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() 函数返回指定格式的时间。
语法:
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
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的详细参数整理下,方便以后用到,以后搜索方便
$_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 认证功能,这个变量便是认证的类型
定义和用法
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
不知道为什么,最近对Discuz很感兴趣,想了解一下Discuz先进的编程思想和数据库构架思想.
今天看到了Discuz用PHP和结合HTML实现页面重定向的一个语句.从来没有看到过.
哈哈,贴在上面大家一起分享
<?php
$url_forward="http://hi.baidu.com/phpwzd";
echo "<meta http-equiv=refresh content=\"5;URL=$url_forward\">";
?>
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);
- ?>