php编程 之 php进阶练习
1,php的date相关操作:
PHP date() 函数可把时间戳格式化为可读性更好的日期和时间。
<?php
echo date("Y/m/d") . "<br>"; //返回2016/10/21
echo date("Y.m.d") . "<br>"; //返回2016.10.21
echo date("Y-m-d"); //返回2016-10-21
?>
注意:带着时分秒的格式是这样的:$t=date("Y.m.d.H.i.s")
调用这个函数以前,最好是先设定一下时区:date_default_timezone_set('Asia/Shanghai');(前面这句话直接加在开头就行)
format字符 |
说明 | 返回值例子 |
|---|---|---|
| 日 | --- | --- |
| d | 月份中的第几天,有前导零的 2 位数字 | 01 到 31 |
| D | 星期中的第几天,文本表示,3 个字母 | Mon 到 Sun |
| j | 月份中的第几天,没有前导零 | 1 到 31 |
| l("L"的小写字母) | 星期几,完整的文本格式 | Sunday 到 Saturday |
| N | ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) | 1(表示星期一)到 7(表示星期天) |
| S | 每月天数后面的英文后缀,2 个字符 | st,nd,rd 或者 th。可以和 j 一起用 |
| w | 星期中的第几天,数字表示 | 0(表示星期天)到 6(表示星期六) |
| z | 年份中的第几天 | 0 到 365 |
| 星期 | --- | --- |
| W | ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) | 例如:42(当年的第 42 周) |
| 月 | --- | --- |
| F | 月份,完整的文本格式,例如 January 或者 March | January 到 December |
| m | 数字表示的月份,有前导零 | 01 到 12 |
| M | 三个字母缩写表示的月份 | Jan 到 Dec |
| n | 数字表示的月份,没有前导零 | 1 到 12 |
| t | 给定月份所应有的天数 | 28 到 31 |
| 年 | --- | --- |
| L | 是否为闰年 | 如果是闰年为 1,否则为 0 |
| o | ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) | Examples: 1999 or 2003 |
| Y | 4 位数字完整表示的年份 | 例如:1999 或 2003 |
| y | 2 位数字表示的年份 | 例如:99 或 03 |
| 时间 | --- | --- |
| a | 小写的上午和下午值 | am 或 pm |
| A | 大写的上午和下午值 | AM 或 PM |
| B | Swatch Internet 标准时 | 000 到 999 |
| g | 小时,12 小时格式,没有前导零 | 1 到 12 |
| G | 小时,24 小时格式,没有前导零 | 0 到 23 |
| h | 小时,12 小时格式,有前导零 | 01 到 12 |
| H | 小时,24 小时格式,有前导零 | 00 到 23 |
| i | 有前导零的分钟数 | 00 到 59> |
| s | 秒数,有前导零 | 00 到 59> |
| u | 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函数总是返回 000000 因为它只接受 integer 参数, 而 DateTime::format() 才支持毫秒。 | 示例: 654321 |
| 时区 | --- | --- |
| e | 时区标识(PHP 5.1.0 新加) | 例如:UTC,GMT,Atlantic/Azores |
| I | 是否为夏令时 | 如果是夏令时为 1,否则为 0 |
| O | 与格林威治时间相差的小时数 | 例如:+0200 |
| P | 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加) | 例如:+02:00 |
| T | 本机所在的时区 | 例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如"Eastern Standard Time",中文版会显示"中国标准时间")。 |
| Z | 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 | -43200 到 43200 |
| 完整的日期/时间 | --- | --- |
| c | ISO 8601 格式的日期(PHP 5 新加) | 2004-02-12T15:19:21+00:00 |
| r | RFC 822 格式的日期 | 例如:Thu, 21 Dec 2000 16:01:07 +0200 |
| U | 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 | 参见 time() |
2,文件相关操作:
打开文件:
<?php
$file=fopen("filename.txt","r");
?>
文件打开模式详情见下表:
| 模式 | 描述 |
|---|---|
| r | 只读。在文件的开头开始。 |
| r+ | 读/写。在文件的开头开始。 |
| w | 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。 |
| w+ | 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。 |
| a | 追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。 |
| a+ | 读/追加。通过向文件末尾写内容,来保持文件内容。 |
| x | 只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。 |
| x+ | 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。 |
关闭文件:fclose($filename);
检测是否到达文件末尾:
if (feof($filename)) echo "文件结尾";
逐行读取文件:
<?php
$file = fopen("welcome.txt", "r") or exit("无法打开文件!");
// 读取文件每一行,直到文件结尾
while(!feof($file)) //如果没有到达文件末尾
{
echo fgets($file). "<br>"; //就逐行读取文件
}
fclose($file); //到了末尾就关闭
?>
逐字读取文件:
<?php
$file=fopen("welcome.txt","r") or exit("无法打开文件!");
while (!feof($file))
{
echo fgetc($file); //注意,fgetc()函数,这是逐字读取。
}
fclose($file);
?>
拓展:php读取文件的五种方法:
第一种:
<?php
$file_path = "test.txt";
if(file_exists($file_path)){
$fp = fopen($file_path,"r");
$str = fread($fp,filesize($file_path));//指定读取大小,这里把整个文件内容读取出来
echo $str = str_replace("\r\n","<br />",$str);
}
?>
第二种
<?php
$file_path = "test.txt";
if(file_exists($file_path)){
$str = file_get_contents($file_path);//将整个文件内容读入到一个字符串中
$str = str_replace("\r\n","<br />",$str);
echo $str;
}
?>
第三种
<?php
$file_path = "test.txt";
if(file_exists($file_path)){
$fp = fopen($file_path,"r");
$str = "";
$buffer = 1024;//每次读取 1024 字节
while(!feof($fp)){//循环读取,直至读取完整个文件
$str .= fread($fp,$buffer);
}
$str = str_replace("\r\n","<br />",$str);
echo $str;
}
?>
第四种:
<?php
$file_path = "test.txt";
if(file_exists($file_path)){
$file_arr = file($file_path);
for($i=0;$i<count($file_arr);$i++){//逐行读取文件内容
echo $file_arr[$i]."<br />";
}
/*
foreach($file_arr as $value){
echo $value."<br />";
}*/
}
?>
第五种:比较推荐用这个。
<?php
$file_path = "test.txt";
if(file_exists($file_path)){
$fp = fopen($file_path,"r");
$str ="";
while(!feof($fp)){
$str .= fgets($fp);//逐行读取。如果fgets不写length参数,默认是读取1k。
}
$str = str_replace("\r\n","<br />",$str);
echo $str;
}
?>
3,跨文件调用函数
t1.php文件:作用在于把当前时间写到txt文档中,然后一行一行读取,读到的信息加工一下,展示出来。
<?php
function wgTime()
{
date_default_timezone_set('Asia/Shanghai');
$t=date("Y.m.d.H.i.s")."\n";
//var_dump($t);
$file=fopen("t1.txt","a");
fwrite($file,$t);
fclose($file);
$file="t1.txt";
if(file_exists($file)){
$file_arr=file($file); //行读取
for ($i=0;$i<count($file_arr);$i++){
$str=explode(".",$file_arr[$i]);
$dw=array("Y ","M ","D ","H ","I ","S ");
for ($j=0;$j<6;$j++){
//echo $j."序号"."<br>";
echo $str[$j],$dw[$j];
}
echo "<br>";
}
}
}
//wgTime(); 因为调用的时候会直接执行,所以要注释掉才好调用
?>
在daqing.php文件中如果想要调用t1.php的方法,可以这样:
<?php
require_once "t1.php"; //表示调用一次
wgTime();
?>
4,php数据库相关操作:
补充:die() 函数输出一条消息,并退出当前脚本。该函数是 exit() 函数的别名。
$rowcount=mysqli_num_rows($result),mysqli_num_rows()函数返回记录数。
mysqli_fetch_assoc()是一个读取数据库数据的函数,它会一行一行地读取,并且把读到的数据转化成数组,数组的键是数据库的列名,值是具体的数。比如,读取id 和currtime,id=1,currtime=2018.09.05.12.12.12,这个函数就会生成这样的数组:'currtime' => '2018.09.05.10.58.06 'id'=>1。
连接数据库:
//mysqli-面向对象
<?php
$servername="localhost";
$username="xxx";
$password="xxx";
$conn=new mysqli($servername,$username,$password);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>
//mysqli-面向过程
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$conn = mysqli_connect($servername, $username, $password);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "连接成功";
?>
个人比较倾向于面向过程的这种方法,因为特殊符号比较少。
创建数据表:
<?php
$servername = "localhost";
$username = "xxx";
$password = "xxx";
$dbname="daqingdb"; //在这里可以直接加入datebase参数。
$conn = mysqli_connect($servername, $username, $password,$dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "连接成功 <br>";
$sql="create table wgtime (`id` int(4) unsigned auto_increment primary key,time varchar(20) not null)";
if (mysqli_query($conn,$sql)){
echo "创建table:wgTime 成功!<br>";
}else{
echo "创建表error".mysqli.error($conn);
}
mysqli_close($conn);
echo "exitd!";
?>
把时间写入数据库,并且读取出来:
<?php
date_default_timezone_set('Asia/Shanghai');
$t=date("Y.m.d.H.i.s")."\n";
$servername = "localhost";
$username = "xxx";
$password = "xxx";
$dbname="daqingdb"; //在这里可以直接加入datebase参数。
$conn = mysqli_connect($servername, $username, $password,$dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "连接成功 <br>";
// $sql="create table wgtime (`id` int(4) unsigned auto_increment primary key,currtime varchar(30) not null)";
// if (mysqli_query($conn,$sql)){
// echo "创建table:wgTime 成功!<br>";
// }else{
// echo "创建表error".mysqli.error($conn);
// }
$sql1="INSERT INTO `wgtime`(`currtime`) VALUES ('$t')"; //$t要用单引号表明
if (mysqli_query($conn,$sql1)){
echo "新纪录插入成功 <br>";
}else{
echo "error:".mysqli_error($conn); //打印出mysql返回的错误
}
//$sql2="select * from `wgtime`";
$sql2="select `currtime` from `wgtime`";
$result=mysqli_query($conn,$sql2);
//var_dump($result); $result竟然是个object对象类!其方法或者属性有:current_field,field_count,lengths,num_rows,type.
if (mysqli_num_rows($result)>0){ //mysqli_num_rows($result)返回数据库中查询到的记录的行数
echo "查询成功<br>";
while ($row=mysqli_fetch_assoc($result)){
//var_dump($row); 这是一个数组,类似于字典吧。
$dw=array("Y ","M ","D ","H ","I ","S ");
$str=explode(".",$row["currtime"]);
for($i=1;$i<6;$i++){
echo $str[$i],$dw[$i];
}
echo "<br>";
}
}else{
echo "error:".mysqli_error($conn);
}
mysqli_close($conn);
echo "exitd!";
?>
5,php文件和目录相关操作。
补充:
file_exists()判断文件或者文件夹是否存在,返回布尔值
$list=scandir($dirpath)读取$dirpath代表的位置的下面的文件。
chdir(path)改变当前文件位置到指定地方,约等于文件夹的指针。
<?php
function dirBuilder($d,$t,$note) //参数分别是:文件夹名,文件名,文件内容
{
// date_default_timezone_set('Asia/Shanghai'); //也可以不用参数,改用时间
// $d=date("Y年m月d日");
// $t=date("H时i分s秒");
// $note="hello";
$dirpath="C:/xampp/htdocs/daqing_new/dir_test/$d"; //判断文件夹是否存在,不存在就创建
if (!file_exists($dirpath)){
mkdir($dirpath,0777,true);
//echo "新建文件夹<br>";
} chdir($dirpath);
//echo "改变当前文件夹<br>";
if (file_exists("C:/xampp/htdocs/daqing_new/dir_test/$d/$t.txt")){ //判断是否有同名文件
echo "文件已经存在,没有创建新的<br>";
}else{
//echo "文件不存在,新建<br>";
$myfile=fopen("$t.txt",'w');
fwrite($myfile,$note);
fclose($myfile);
}
$list=scandir($dirpath); //读取文件夹下的文件目录
var_dump($list); //$list是一个数组,带着文件名和length,不能直接打印
for($i=2;$i<count($list);$i++){
echo "$list[$i] <br>";
}
}
dirBuilder('123',"345","hello i am daqing");
?>
6,php和html混写
第一种方法:单双引号包围法
<?php
echo '
<!DOCTYPE html>
<html>
<head>
<title> </title>
</head>
<body>
<span>测试页面</span>
</body>
</html>
';
?>
//返回:测试页面
单双引号的方法是一样的,但是单双引号有区别,单引号不会解析内部的变量,双引号支持变量的解析。
缺点在于:
输出的内容中包含引号的话不好处理;编辑器不好提醒引号内部的格式错误。
第二种,使用EOF标识,这种方法支持变量解析
<?php
$content='hello';echo <<<EOF
‘$content’
EOF
?>
//返回:'hello',证明这种方法支持单双引号的使用
第三种,html中嵌入php程序块
基本思想:提前定义好函数或者方法,然后在需要输出的地方写上代码就可以了。
<?php
function test(){
echo "function test! <br>";
}
?> //方法或者函数需要写在<?php ?>中,下文的输出也要写在这样的格式中 <!DOCTYPE html> //html语句不需要写在<?php ?>中,php会理解的。
<html>
<head>
<title><?php test();?> </title>
</head>
<body>
<span><?php test();echo 'lala';?></span>
</body>
</html> //输出:function test! <br> lala
第四种,使用前端模板引擎
比如,我们可以使用Smarty,当然了,目前并不能理解。
相关技术的关系:
HTML展示内容
PHP动态修改输出HTML展示内容
CSS美化页面
JS让页面动起来。提高浏览体验。
制作一个键:
<html> <head>
<meta charset="utf-8"> //在标题里,定义了网页的元信息,比如编码方式charset
<title> //title标签,会显示在浏览器窗口的头上
大晴测试
</title>
</head> <body>
<button name= "logup" type = "submit" >呵呵</button> //button中定义的是这个按键的属性
</body> </html>
php编程 之 php进阶练习的更多相关文章
- 编程C语言进阶篇——自定义数据类型:结构体
一.结构体 定义方法: 结构名 变量名 特点: 两个同类型的结构变量可以相互赋值,但是结构变量之间不能使用"<","=="等运算符,如果使用则需要对运算符 ...
- 一个编程菜鸟的进阶之路(C/C++)
学编程是一条不归路,但我义无反顾.只能往前冲,知道这个过程是痛苦的,所以我开通这个博客,记录自己在编程中遇到的问题和心得,一是希望可以帮助跟我一样遇到同样问题的人,二是把这作为对自己的勉励及回忆:
- Shell编程之变量进阶
一.变量知识进阶 1.特殊的位置参数变量 实例1:测试$n(n为1...15) [root@codis-178 ~]# cat p.sh echo $1 [root@codis-178 ~]# sh ...
- 编程挑战JavaScript进阶篇(慕课网题目)
编程挑战 现在利用之前我们学过的JavaScript知识,实现选项卡切换的效果. 效果图: 文字素材: 房产: 275万购昌平邻铁三居 总价20万买一居 200万内购五环三居 140万安家东三环 ...
- WEB编程 入门简单 进阶难
其实不论是WEB还是其他什么编程,都是这个道理,至于为什么,我贴几段代码,大家感受下. JS 计算今天是星期几 入门级 // 计算系统当前是星期几 var str =""; var ...
- 编程C语言进阶篇——自定义数据类型:共同体
什么是"自定义数据类型"?顾名思义,就是用户可以随时在程序中自行定义新的数据类型.自定义数据类型时需要设置数据类型的名称及其成员.数据类型成员各属性的设置方法等同于变量设置时相应属 ...
- python--DenyHttp项目(1)--socket编程:服务器端进阶版socketServer
在网上看到了SocketServer模块,于是Server端简化: #coding:utf-8 import socketserver class MyTCPHandler(socketserver. ...
- Spark学习之编程进阶总结(一)
一.简介 这次介绍前面没有提及的 Spark 编程的各种进阶特性,会介绍两种类型的共享变量:累加器(accumulator)与广播变量(broadcast variable).累加器用来对信息进行聚合 ...
- 【T-SQL进阶】03.执行计划之旅-1
到大牛们说执行计划,总是很惶恐,是对知识的缺乏的惶恐,所以必须得学习执行计划,以减少对这一块知识的惶恐,下面是对执行计划的第一讲-理解执行计划. 本系列[T-SQL]主要是针对T-SQL的总结. T- ...
随机推荐
- Prometheus-自定义Node_Exporter
标量(Scalar):一个浮点型的数字值 标量只有一个数字,没有时序. 需要注意的是,当使用表达式count(http_requests_total),返回的数据类型,依然是瞬时向量.用户可以通过内置 ...
- 剑指Offer_编程题_10
题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? class Solution { public: int r ...
- docker mesos集群资源调度平台
mesos原理与架构 首先,再次需要强调 Mesos 自身只是一个资源调度框架,并非一整套完整的应用管理平台,所以只有 Mesos 自己是不能干活的.但是基于 Mesos,可以比较容易地为各种应用管理 ...
- Java中的XML
XML是一种可扩展的标记语言,可扩展就是<>内的东西可以自己定义,可以随便写.标记语言就是加了<>符号的 .HTML是超文本标记语言,不可以拓展,因为你写个<p> ...
- 微信小程序遇到的知识点
话不多说,都是干货!!! 页面的生命周期: 当打开一个页面的时候,会触发onLoad和onReady和onShow事件. onLoad和onReady只触发一次.除非卸载了页面就是触发了onUnloa ...
- Nginx记录-Nginx基础(转载)
1.Nginx常用功能 1.Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理. Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能.Nginx可以根据不同的 ...
- Linux下常用配置文件
/etc/sysconfig/network 包括主机基本网络信息,用于系统启动 /etc/sysconfig/network-script/ 此目录下是系统启动最初始化网络的信息 /etc/sysc ...
- js中得计算问题算式结果拼接成字符串怎么解决
如题:经常遇到类似问题 一种:自定义的弱类型 var savNum=0; var num=$("#numU").val();//jsp页面获得得值 savNum=parseInt( ...
- 全面理解JavaScript中的 this
全面理解JavaScript中的 this 上下文 VS 作用域 作用域(scope) 是在运行时代码中的某些特定部分中变量,函数和对象的可访问性.换句话 说,作用域决定了代码区块中变量和其他资源的可 ...
- 将WORD2010文件标记为最终状态
将WORD2010文件标记为最终状态 在与他人共享WORD2010文档的副本之前,可以使用“标记为最终状态”命令将文件设置为只读,防止他人对文件进行更改.在将文件标记为最终状态后,键入.编辑命令以及校 ...