目录
- 字符串常用函数
- PHP中日期与时间
- PHP JISON
- haader方法
- session
- cookie
一.字符串常用函数
1、strlen(string):返回字符串的长度;
2、substr(string,start,length):截取指定长度的字符串;
参数 | 描述 |
---|---|
string | 必需。规定要返回其中一部分的字符串。 |
start | 必需。规定在字符串的何处开始。正数 - 在字符串的指定位置开始 |
length | 可选。规定被返回字符串的长度。默认是直到字符串的结尾。 |
3、strtoupper(string):把一个字符串转换为大写;
4、strrev(string):翻转字符串(倒叙输出);
5、strpos(string,str,start):查找字符串在另一字符串中第一次出现的位置;
6、strrpos(string,str,start):查找字符串在另一字符串中最后一次出现的位置;
参数 | 描述 |
---|---|
string | 必需。规定要搜索的字符串。 |
str | 必需。规定要查找的字符串。 |
start | 可选。规定在何处开始搜索。 |
返回值:返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。
注释:字符串位置从 0 开始,不是从 1 开始。
注释:strpos() 函数对大小写敏感。
stripos() 函数是不区分大小写的。
7、strrchr(string,char):查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符;
参数 | 描述 |
---|---|
string | 必需。规定要搜索的字符串。 |
char | 必需。规定要查找的字符。如果该参数是数字,则搜索匹配此数字的 ASCII 值的字符。 |
返回值:返回从某个字符串在另一个字符串中最后一次出现的位置到主字符串结尾的所有字符。
如果未找到此字符,则返回 FALSE。
8、strstr(string,str)截取str的字符串
9、str_replace(search,replace,string,find):替换字符串中的一些字符(对大小写敏感);
参数 | 描述 |
---|---|
string | 必需。规定要搜索的字符串。 |
search | 必需。规定所搜索的字符串。 |
replace | 必需。规定替换 find 中的值的值。 |
find | 必需。规定要查找的值。 |
注释
search:如果该参数是数字,则搜索匹配该数字对应的 ASCII 值的字符。
返回值: 返回带有替换值的字符串或数组。
二. PHP中日期与时间
PHP 时间戳
UNIX 时间戳(timestamp)是 PHP 中关于时间日期一个很重要的概念,它表示从 1970年1月1日 00:00:00 到当前时间的秒数之和。
PHP提供了内置函数 time() 来取得服务器当前时间的时间戳。
例子:
<?php
echo time();
?>
上面的例子运行后得到的是一串类似这样的数字:1279115455
我们可以通过 date() 等函数将它格式化为我们需要的时间日期格式。
有效的时间戳典型范围是格林威治时间 1901年12月13日 20:45:54 到 2038年1月19日 03:14:07(此范围符合 32 位有符号整数的最小值和最大值)。不过从 5.1.0 起,已经克服了年的范围只能是 1901 到 2038 之间的问题。
格式化时间
date() 函数用于格式化时间,返回一个字符串。
语法:
string date( string format [, int timestamp] )
参数 format 表示时间格式化的方式,可能的方式如下:
格式化方式说明: 格式化方式 | 说明 |
---|---|
Y | 4位数字年,y为2位数字,如99即1999年 |
m | 数字月份,前面有前导0,如01。n 为无前导0数字月份 |
F | 月份,完整的文本格式,例如 January 或者 March |
M | 三个字母缩写表示的月份,例如 Jan 或者 Mar |
d | 月份中的第几天,前面有前导0,如03。j 为无前导0的天数 |
w | 星期中的第几天,以数字表示,0表示星期天 |
z | 年份中的第几天,范围0-366 |
W | 年份中的第几周,如第32周 |
H | 24小时格式,有前导0,h为12小时格式 |
G | 24小时格式,无前导0,g为对应12小时格式。 |
I | 分钟格式,有前导0 |
S | 秒格式,有前导0 |
可选参数 timestamp 表示时间戳,默认为 time() ,即当前时间戳。
我们可以通过 date() 函数提供的丰富格式化来显示需要的时间日期,如下面的例子:
date("Y-m-d",time()); //显示格式如 2008-12-01
date("Y.m.d",time()); //显示格式如 2008.12.01
date("M d Y",time()); //显示格式如 Dec 01 2008
date("Y-m-d H:i",time()); //显示格式如 2008-12-01 12:01
提示
如果您输出的时间和实际时间差8个小时(假设您采用的北京时区)的话,请检查php.ini文件,做如下设置:
date.timezone = PRC
三.PHP JISON
JSON 函数
函数 | 描述 |
---|---|
json_encode | 对变量进行 JSON 编码 |
json_decode | 对 JSON 格式的字符串进行解码,转换为 PHP 变量 |
json_encode
PHP json_encode() 用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE 。
语法
string json_encode ( $value )
实例
以下实例演示了如何将 PHP 数组转换为 JSON 格式数据:
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
以上代码执行结果为:
{"a":1,"b":2,"c":3,"d":4,"e":5}
json_decode
PHP json_decode() 函数用于对 JSON 格式的字符串进行解码,并转换为 PHP 变量。
语法
mixed json_decode ($json_string [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
参数
- json_string : 待解码的 JSON 字符串,必须是 UTF-8 编码数据
- assoc : 当该参数为 TRUE 时,将返回数组,FALSE 时返回对象。
- depth : 整数类型的参数,它指定递归深度
- options : 二进制掩码,目前只支持 JSON_BIGINT_AS_STRING 。
实例
以下实例演示了如何解码 JSON 数据:
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
以上代码执行结果为:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
PHP 表单
PHP 预定义了 $_POST 和 $_GET 变量来接收表单信息。
HTML 表单
表单例子,form.html:
上面的例子中,表单信息包含了一个(称呼)输入框和 提交 按钮。当点击 提交 按钮时,网页就会把表单信息(用户输入的称呼)以 POST 方式提交给 comment.php 文件处理。
comment.php 文件:
`<?php echo $_POST["nickname"]; ?>
当我们在 form.html 输入框里输出称呼:小明,点击 提交 按钮,comment.php 页面显示:
您的称呼是:小明
上面就是一个简单的表单处理过程,PHP 预定义了 $_POST 和 $_GET 变量来接收表单信息
HTML 表单验证
表单用于收集客户的输入信息时,不要想当然的以为客户会按照设想中的输入符合规定的内容。任何时刻都要对客户的输入做严格检查。
客户端验证
客户端表单验证一般是基于 Javascript 脚本的验证方式,这种验证方式能有效减少服务器的负担,也能即时提醒客户输入的错误之处。
服务器端验证
在某些情况下,除了进行客户端的验证外,可能还需要进行服务器端的验证(如访问数据库)。这时候需要在 PHP 程序里做好逻辑上的验证。关于服务器端验证
PHP $_POST
$_POST 变量用于接收表单 method=“post” 方式发送的表单信息。
PHP $_POST
$_POST 变量用于获取由 HTTP POST 方式发送的表单数据。其数据结构是一个关联数组,键名为表单元素的 name ,值为对应的表单取值。
表单 form.html:
在 comment.php 中,打印出 $_POST 信息:
<?php
print_r($_POST);
?>
输出如下:
Array
(
=> 小明
)
访问 $_POST 变量
可以像访问普通数组一样方便的访问 $_POST 变量:
<?php
echo '您的称呼是:',$_POST["nickname"];
?>
POST 方法发送的数据对任何人都是不可视的,且对发送信息的量几乎无限制,对于敏感数据(如密码)或者大容量的数据信息提交,通常采用的是 POST 方式。
PHP $_GET
$_GET 变量用于接收表单 method=“get” 方式发送的表单信息。
PHP $_GET
$_GET 变量的数据结构同 $_POST 类似,也是一个关联数组,键名为表单元素的 name,用于收集以 HTTP GET 方式请求的数据。
表单 form.html:
将前面的例子表单改为 GET 方式,输入称呼后,在浏览器地址栏,看起来类似如下(IE 浏览器下中文可能会经 encode 编码):
http://www.5idev.com/html/comment.php?nickname=%D0%A1%C3%F7
取得 GET 表单数据:
<?php
echo '您的称呼是:',$_GET["nickname"]; //输出:您的称呼是:小明
?>
提示
- GET 方式会把表单数据暴露在浏览器地址栏里,因此不宜发送敏感数据(如密码等),敏感信息发送请使用 POST 方式。
- GET 方式对发送的信息量有一定限制,如果发送较大的信息,请使用POST 方式。
- GET 方式访问的页面可以加入收藏夹而在以后可以直接访问,而 POST 方式访问的页面则不能。
HTTP GET
HTTP GET 方式不仅是用于表单数据发送,它是指更广泛的以实体的方式得到由请求 URL (浏览器地址)所指定资源的信息。具体参见《XHTML Get与Post》。
利用 HTTP GET 方式还可以向网页传递数据信息,如下面这个地址:
http://www.520mg.com/html/article.php?id=10
在该例子中,就通过地址 GET 方式向 article.php 传递了一个 id=10 的信息。在 article.php 中可以通过 $_GET[“id”] 取得数据,其实际作用可能是从数据库中读取 id 为 10 的这篇文章,多个数据以 & 符号来连接:
http://www.520mg.com/html/article.php?type=2&id=10
article.php 中取得 GET 数据:
<?php
echo $_GET["type"]; //输出 2
echo $_GET["id "]; //输出 10
?>
PHP $_REQUEST
在 PHP 中还预定义了 $_REQUEST 变量,它包含了 P O S T 、 _POST 、 POST、_GET 、和 $_COOKIE 。其访问方式同 $_POST 等:
<?php
echo $_REQUEST["nickname"] //输出用户输入的称呼
echo $_REQUEST["id "]; //输出 10
?>
案例
获取的GET参数
q1 默认0 q2默认是q1+100
产生随机一个 q1 到q2的整数
isset($_GET["q1"])?$q1=$_GET["q1"]:$q1=0;
isset($_GET["q2"])?$q2=$_GET["q2"]:$q2=$q1+100;
$num = rand($q1,$q2);
echo "<br/>$num<br/>";
isset()检查变量是否存在
isset()
PHP isset() 用于检测一个或多个变量是否设置,如果被检测的变量存在则返回 TRUE,否则返回 FALSE。
语法:
bool isset( mixed var [, mixed var [, …]] )
如果检测多个变量时,只要其中一个变量存在,则检测结果就会返回 TRUE 。
例子:
<?php
$var = 1;
if(isset($var)){
echo '变量 $var 已经被设置';
} else {
echo '变量 $var 还未被设置';
}
?>
运行该例子输出:
变量 $var 已经被设置
注意
- isset() 只能用于检测变量,传递任何其它参数都将造成解析错误。
- isset() 是一个语言结构而非函数,因此它无法被变量函数调用。
下述情况,isset() 返回 TRUE :
$var = "";
$var = array();
$var = 0;
$var = false;
五.PHP Session
创建 session
要创建 session ,必须先使用 session_start() 函数开启一个 session 会话,系统会分配一个会话 ID:
<?php
session_start();
?>
存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:
语法:
$_SESSION[‘views’]=1;
读取 session
PHP 内置的 $_SESSION 变量可以很方便的访问设置的 session 变量。
例子:
<?php
// 检索 session 数据
echo "浏览量:". $_SESSION['views'];
?>
销毁 session
如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
unset() 函数用于释放指定的 session 变量:
例子:
<?php
session_start();
if(isset($_SESSION['views']))
{
unset($_SESSION['views']);
}
?>
另一种方式
您也可以通过调用 session_destroy() 函数彻底销毁 session:
<?php
session_destroy();
?>
案例
当前用户浏览页面的次数
!isset($_SESSION["view"])?$_SESSION["view"]=1:$_SESSION["view"]=$_SESSION["view"]+1;
echo "页面的浏览次数为",$_SESSION["view"],"<br>";
六.PHP header
两种转换方法:
header("Content-type: application/json");
返回JSON格式
header("Content-type: text/html; charest=utf-8");
返回html格局指定 编码
七.Cookie
Cookie是HTTP标头的一部分,因此setCookie()函数必须在其他信息被输出到浏览器前调用,所以即使是空格或空行,都不要在调用setCookie()函数之前输出
- cookie的设置有两种方式
- 设置cookie变量
- 设置cookie数组
以下是代码实例:
setcookie("mtg","mmm");
echo $_COOKIE["mtg"];//输出mmm
setcookie("user[username]", "abcd");
setcookie("user[password]",md5("123456"));
setcookie("user[email]", "xxx@163.com");
foreach($_COOKIE["user"] as $key => $value){
echo $key.":".$value."</br>";
}
//输出username:abcd
//password:e10adc3949ba59abbe56e057f20f883e
//email:xxx@163.com
2.删除Cookie:有2种方式删除Cookie:
- setcookie()时,只输入第一个参数,第二个参数相当于null
setcookie("mtg");
- 设置cookie为已过期
setcookie("mtg","",time()-1);
注释:
- 储存在客户端的数据,可以设置过期时间
- 服务器或者客户端都可以设置cookie
- 每次http请求都会携带cookie
- http响应也会携带cookie