当前位置: 编程技术>php
本页文章导读:
▪模拟SQLSERVER的两个函数:dateadd(),datediff()
<?php//文件名:date.inc.php3//在使用这两个函数前,要先将日期或日期时间转换成timestamp类型。//如://$today=mktime(0,0,0,date("m"),date("d"),date("Y"));/****模拟sqlserver中的dateadd函数*******$part 类型:str.........
▪实时抓取YAHOO股票报价的代码
<? function getYahooQuote($stockSymbol = "CCR") { if (!$targetURL) $targetURL = "http://finance.yahoo.com/q?s=$stockSymbol&d=t"; //设定要抓取的URL目标 $fd = fopen("$targetURL", "r"); $stopExtra.........
▪挑战最棒的留言本的源码(一)
留言本的使用说明 哈哈,很开心,做了好些时候的留言本总算可以发表了... 阿,希望能大家喜欢,不喜欢也不要紧,但是,一定有不喜欢的理由,,烦请一定告知!!! 谢谢!!! 本留言本从一开始.........
[1]模拟SQLSERVER的两个函数:dateadd(),datediff()
来源: 互联网 发布时间: 2013-11-30
<?php
//文件名:date.inc.php3
//在使用这两个函数前,要先将日期或日期时间转换成timestamp类型。
//如:
//$today=mktime(0,0,0,date("m"),date("d"),date("Y"));
/****模拟sqlserver中的dateadd函数*******
$part 类型:string
取值范围:year,month,day,hour,min,sec
表示:要增加的日期的哪个部分
$n 类型:数值
表示:要增加多少,根据$part决定增加哪个部分
可为负数
$datetime类型:timestamp
表示:增加的基数
返回 类型:timestamp
**************结束**************/
function dateadd($part,$n,$datetime){
$year=date("Y",$datetime);
$month=date("m",$datetime);
$day=date("d",$datetime);
$hour=date("H",$datetime);
$min=date("i",$datetime);
$sec=date("s",$datetime);
$part=strtolower($part);
$ret=0;
switch ($part) {
case "year":
$year+=$n;
break;
case "month":
$month+=$n;
break;
case "day":
$day+=$n;
break;
case "hour":
$hour+=$n;
break;
case "min":
$min+=$n;
break;
case "sec":
$sec+=$n;
break;
default:
return $ret;
break;
}
$ret=mktime($hour,$min,$sec,$month,$day,$year);
return $ret;
}
/****模拟sqlserver中的datediff函数*******
$part 类型:string
取值范围:year,month,day,hour,min,sec
表示:要增加的日期的哪个部分
$date1,$date2 类型:timestamp
表示:要比较的两个日期
返回 类型:数值
**************结束*(*************/
function datediff($part,$date1,$date2){
//$diff=$date2-$date1;
$year1=date("Y",$date1);
$year2=date("Y",$date2);
$month2=date("m",$date2);
$month1=date("m",$date1);
$day2=date("d",$date2);
$day1=date("d",$date1);
$hour2=date("d",$date2);
$hour1=date("d",$date1);
$min2=date("i",$date2);
$min1=date("i",$date1);
$sec2=date("s",$date2);
$sec1=date("s",$date1);
$part=strtolower($part);
$ret=0;
switch ($part) {
case "year":
$ret=$year2-$year1;
break;
case "month":
$ret=($year2-$year1)*12+$month2-$month1;
break;
case "day":
$ret=(mktime(0,0,0,$month2,$day2,$year2)-mktime(0,0,0,$month1,$day1,$year1))/(3600*24);
break;
case "hour":
$ret=(mktime($hour2,0,0,$month2,$day2,$year2)-mktime($hour1,0,0,$month1,$day1,$year1))/3600;
break;
case "min":
$ret=(mktime($hour2,$min2,0,$month2,$day2,$year2)-mktime($hour1,$min1,0,$month1,$day1,$year1))/60;
break;
case "sec":
$ret=$date2-$date1;
break;
default:
return $ret;
break;
}
return $ret;
}
?>
//文件名:date.inc.php3
//在使用这两个函数前,要先将日期或日期时间转换成timestamp类型。
//如:
//$today=mktime(0,0,0,date("m"),date("d"),date("Y"));
/****模拟sqlserver中的dateadd函数*******
$part 类型:string
取值范围:year,month,day,hour,min,sec
表示:要增加的日期的哪个部分
$n 类型:数值
表示:要增加多少,根据$part决定增加哪个部分
可为负数
$datetime类型:timestamp
表示:增加的基数
返回 类型:timestamp
**************结束**************/
function dateadd($part,$n,$datetime){
$year=date("Y",$datetime);
$month=date("m",$datetime);
$day=date("d",$datetime);
$hour=date("H",$datetime);
$min=date("i",$datetime);
$sec=date("s",$datetime);
$part=strtolower($part);
$ret=0;
switch ($part) {
case "year":
$year+=$n;
break;
case "month":
$month+=$n;
break;
case "day":
$day+=$n;
break;
case "hour":
$hour+=$n;
break;
case "min":
$min+=$n;
break;
case "sec":
$sec+=$n;
break;
default:
return $ret;
break;
}
$ret=mktime($hour,$min,$sec,$month,$day,$year);
return $ret;
}
/****模拟sqlserver中的datediff函数*******
$part 类型:string
取值范围:year,month,day,hour,min,sec
表示:要增加的日期的哪个部分
$date1,$date2 类型:timestamp
表示:要比较的两个日期
返回 类型:数值
**************结束*(*************/
function datediff($part,$date1,$date2){
//$diff=$date2-$date1;
$year1=date("Y",$date1);
$year2=date("Y",$date2);
$month2=date("m",$date2);
$month1=date("m",$date1);
$day2=date("d",$date2);
$day1=date("d",$date1);
$hour2=date("d",$date2);
$hour1=date("d",$date1);
$min2=date("i",$date2);
$min1=date("i",$date1);
$sec2=date("s",$date2);
$sec1=date("s",$date1);
$part=strtolower($part);
$ret=0;
switch ($part) {
case "year":
$ret=$year2-$year1;
break;
case "month":
$ret=($year2-$year1)*12+$month2-$month1;
break;
case "day":
$ret=(mktime(0,0,0,$month2,$day2,$year2)-mktime(0,0,0,$month1,$day1,$year1))/(3600*24);
break;
case "hour":
$ret=(mktime($hour2,0,0,$month2,$day2,$year2)-mktime($hour1,0,0,$month1,$day1,$year1))/3600;
break;
case "min":
$ret=(mktime($hour2,$min2,0,$month2,$day2,$year2)-mktime($hour1,$min1,0,$month1,$day1,$year1))/60;
break;
case "sec":
$ret=$date2-$date1;
break;
default:
return $ret;
break;
}
return $ret;
}
?>
[2]实时抓取YAHOO股票报价的代码
来源: 互联网 发布时间: 2013-11-30
<?
function getYahooQuote($stockSymbol = "CCR")
{
if (!$targetURL) $targetURL = "http://finance.yahoo.com/q?s=$stockSymbol&d=t"; //设定要抓取的URL目标
$fd = fopen("$targetURL", "r");
$stopExtract = 0;
$startExtract = 0;
while (!feof($fd))
{
$buffer = fgets($fd, 4096);
//echo trim($buffer)."\n";
if (strstr($buffer, "rowspan=3"))
{
//echo "extract started at line #$lineCount\n";
$startExtract = 1;
}
if ($startExtract && !$stopExtract)
{
if (strstr($buffer, "<a"))
{
$startPos = strrpos($buffer, "<");
$buffer = substr($buffer, $startPos);
}
//$text = trim(strip_tags($buffer));
//echo trim($buffer)."\n";
$buffer = str_replace("\n\r", " ", "$buffer");
if (strstr($buffer, "http://ichart.yahoo.com/v?s=$stockSymbol"))
{
//echo "ichart found!";
$stopExtract = 1;
}
$capturedHTML .= $buffer;
}
if ($startExtract && strstr($buffer, "<br>"))
{
$stopExtract = 1;
//echo "extract stopped at line #$lineCount\n";
echo $capturedHTML;
break;
}
$lineCount++;
}
fclose($fd);
}
//以下为抓取的一个例子
$symbols = array('CCR', 'IIXL','SAPE','WBVN' );
$symbolCount = count($symbols);
for ($i=0; $i< $symbolCount; $i++)
{
echo "$symbols[$i]<br>";
getYahooQuote("$symbols[$i]");
}
?>
function getYahooQuote($stockSymbol = "CCR")
{
if (!$targetURL) $targetURL = "http://finance.yahoo.com/q?s=$stockSymbol&d=t"; //设定要抓取的URL目标
$fd = fopen("$targetURL", "r");
$stopExtract = 0;
$startExtract = 0;
while (!feof($fd))
{
$buffer = fgets($fd, 4096);
//echo trim($buffer)."\n";
if (strstr($buffer, "rowspan=3"))
{
//echo "extract started at line #$lineCount\n";
$startExtract = 1;
}
if ($startExtract && !$stopExtract)
{
if (strstr($buffer, "<a"))
{
$startPos = strrpos($buffer, "<");
$buffer = substr($buffer, $startPos);
}
//$text = trim(strip_tags($buffer));
//echo trim($buffer)."\n";
$buffer = str_replace("\n\r", " ", "$buffer");
if (strstr($buffer, "http://ichart.yahoo.com/v?s=$stockSymbol"))
{
//echo "ichart found!";
$stopExtract = 1;
}
$capturedHTML .= $buffer;
}
if ($startExtract && strstr($buffer, "<br>"))
{
$stopExtract = 1;
//echo "extract stopped at line #$lineCount\n";
echo $capturedHTML;
break;
}
$lineCount++;
}
fclose($fd);
}
//以下为抓取的一个例子
$symbols = array('CCR', 'IIXL','SAPE','WBVN' );
$symbolCount = count($symbols);
for ($i=0; $i< $symbolCount; $i++)
{
echo "$symbols[$i]<br>";
getYahooQuote("$symbols[$i]");
}
?>
[3]挑战最棒的留言本的源码(一)
来源: 互联网 发布时间: 2013-11-30
留言本的使用说明
哈哈,很开心,做了好些时候的留言本总算可以发表了...
阿,希望能大家喜欢,不喜欢也不要紧,但是,一定有不喜欢的理由,,烦请一定告知!!!
谢谢!!!
本留言本从一开始的目标就是""挑战最棒的留言本""!!!我想"没有做不到的,只是看有没有必要"!!!
如果你的建议很好,我一定做到你的要求为止,我的目标:"做一个很棒的程序员".
此留言本的优点和缺点:
-------------------------------------------------------------------
这可能是最重要的了.哈哈!!!
优点:
该留言本最大的优点是,换行.实现了用户换行,(保持原形,中国人的同学录的换行是安一定字数的,也就是说不管你的换行,统统都他给你换行.这样要是想贴文本图形的话,就存在问题了.)而现在大部分的留言本都没有实现自动换行,也就是说它不管你一句写多少个字符,它都会在一行显示,这样要是有一个留言没换行的话,留言本就会变的很难看,窗口下面的行条就会好长,,破坏了叶面的美观!!!.
到今天为止,我还没发现能同时解决这两个问题的留言,这也是我写这留言本的原因所在.
包括oso的论坛,也是不换行的,不信你去留言试试,写一条很长的不回车的字符,这样它的叶面马上就出现问题了.(我和oso提过这问题,不知道改了没有!)
我写了个computer_message($msg);的函数解决了这问题,可以看config.php文件中的源玛.
还有分页:通过两种方式来察看,一是:往前,往后显示留言,另一种是:安页数显示.
还有现在版主可以方便的通过下面的连接来删除和恢复,当然要输入密码.
缺点:
当然有了,要实事求是,就是页面的美化工作做的还不是很够,虽然觉的很必要,但由于时间的关系总觉的这是外面的东西,可以先拖一下,当然只要有一点HTML知识的都可以很方便的修改.
还有就是未知的BUG了!哈哈!!!
下载点,和样本在http://little.oso.com.cn中可以找到!!!
因为说明档是在linux下写的,所以要用写字板打开readme.txt
不要用记事本,要不然会乱码!!!
下面是配置说明:
--------------------------------------------------------------------
为了配置的方便,重新整理了代码,现在已经把全部的需要设置的参数都放在
config.php文件里了,配置起来应该很简单,里面有详悉的说明.
目标:在十分种内搞定你的留言本!!!
1: 建立一个数据库(要主页提供数据库空间)
一般象oso的有phpMyAdmin开放源玛的前端.创建以来很简单的.
取好名字后,记得把config.php 的$db_name改成这个名字
2: 建立留言表(等下把config.php的$table_name改成这里你起的名字).
结构为:
key_liuyan int(11) auto_increment primary key, //主建,自动增加
nikename varchar(20) null // 昵称
subject varchar(100) null // 留言主题
date_created varchar(19) // 留言时间
ip_address varchar(15) // 留言人的IP地址
message mediumtext null // 留言信息
email_address varchar(50) null // 留言人的e-mail地址
zhuye_address varchar(50) null // 留言人的主页地址
huifu_biaozi int(1) default 0 // 版主回复标志
huifu mediumtext null // 版主回复内容
oicq varchar(20) null // 留言人的OICQ号码
可以用如下的SQL来完成!!!(本人测试通过,记得把yourtable_name改成好记点的,
当然不改也行阿)
create table your_liuyan_table(
key_liuyan int(11) auto_increment primary key,
nikename varchar(20) null,
subject varchar(100) null,
date_created varchar(19) ,
ip_address varchar(15),
message mediumtext null,
email_address varchar(50) null,
zhuye_address varchar(50) null,
huifu_biaozi int(1) default 0 ,
huifu mediumtext null,
oicq varchar(20) null
)
3: 建立控制表:(同样要把这里起的名字放到config.php的$table_name_control里去)
结构如下:
leibie varchar(20) primary key,
value varchar(20) null
也可以用下面的SQL语句:
create table your_control_table(
leibie varchar(20) primary key,
value varchar(20) null
)
因为这是你的控制表,所以要自己加入控制记录两条;
SQL语句为:
插入删除密码:
insert into your_control_tble(
leibie,
value)
values
(delete,'1332');
插入回复密码:
insert into your_control_tble(
leibie,
value)
values
(huifu,'1332');
这样放进去的密码为:123,用户名为空!
怎么计算密码和插入的值的关系呢?
是这样的,你的密码 ,如123 把三位数上的各位加起来,等于6,然后把6乘以222就是密码值!!!
6*222=1332.
知道了这关系,当然你可以改成其它的密码了.
不过用户名要为空,,,
这实行的简单加密的原理可以参照主页 http://cxg168.126.com 的三位数.
4: 一切完成,然后只要把除了readme.txt外的文件上传就行了.
如还有什么问题请联系我.
下面是联系我的方法(意见返回):
--------------------------------------------------------------------
?我的留言本: http://little.oso.com.cn
我的OICQ: 873221
我的e-mail: cxg168@sohu.com
---------------------------------------------------------------------
哈哈,很开心,做了好些时候的留言本总算可以发表了...
阿,希望能大家喜欢,不喜欢也不要紧,但是,一定有不喜欢的理由,,烦请一定告知!!!
谢谢!!!
本留言本从一开始的目标就是""挑战最棒的留言本""!!!我想"没有做不到的,只是看有没有必要"!!!
如果你的建议很好,我一定做到你的要求为止,我的目标:"做一个很棒的程序员".
此留言本的优点和缺点:
-------------------------------------------------------------------
这可能是最重要的了.哈哈!!!
优点:
该留言本最大的优点是,换行.实现了用户换行,(保持原形,中国人的同学录的换行是安一定字数的,也就是说不管你的换行,统统都他给你换行.这样要是想贴文本图形的话,就存在问题了.)而现在大部分的留言本都没有实现自动换行,也就是说它不管你一句写多少个字符,它都会在一行显示,这样要是有一个留言没换行的话,留言本就会变的很难看,窗口下面的行条就会好长,,破坏了叶面的美观!!!.
到今天为止,我还没发现能同时解决这两个问题的留言,这也是我写这留言本的原因所在.
包括oso的论坛,也是不换行的,不信你去留言试试,写一条很长的不回车的字符,这样它的叶面马上就出现问题了.(我和oso提过这问题,不知道改了没有!)
我写了个computer_message($msg);的函数解决了这问题,可以看config.php文件中的源玛.
还有分页:通过两种方式来察看,一是:往前,往后显示留言,另一种是:安页数显示.
还有现在版主可以方便的通过下面的连接来删除和恢复,当然要输入密码.
缺点:
当然有了,要实事求是,就是页面的美化工作做的还不是很够,虽然觉的很必要,但由于时间的关系总觉的这是外面的东西,可以先拖一下,当然只要有一点HTML知识的都可以很方便的修改.
还有就是未知的BUG了!哈哈!!!
下载点,和样本在http://little.oso.com.cn中可以找到!!!
因为说明档是在linux下写的,所以要用写字板打开readme.txt
不要用记事本,要不然会乱码!!!
下面是配置说明:
--------------------------------------------------------------------
为了配置的方便,重新整理了代码,现在已经把全部的需要设置的参数都放在
config.php文件里了,配置起来应该很简单,里面有详悉的说明.
目标:在十分种内搞定你的留言本!!!
1: 建立一个数据库(要主页提供数据库空间)
一般象oso的有phpMyAdmin开放源玛的前端.创建以来很简单的.
取好名字后,记得把config.php 的$db_name改成这个名字
2: 建立留言表(等下把config.php的$table_name改成这里你起的名字).
结构为:
key_liuyan int(11) auto_increment primary key, //主建,自动增加
nikename varchar(20) null // 昵称
subject varchar(100) null // 留言主题
date_created varchar(19) // 留言时间
ip_address varchar(15) // 留言人的IP地址
message mediumtext null // 留言信息
email_address varchar(50) null // 留言人的e-mail地址
zhuye_address varchar(50) null // 留言人的主页地址
huifu_biaozi int(1) default 0 // 版主回复标志
huifu mediumtext null // 版主回复内容
oicq varchar(20) null // 留言人的OICQ号码
可以用如下的SQL来完成!!!(本人测试通过,记得把yourtable_name改成好记点的,
当然不改也行阿)
create table your_liuyan_table(
key_liuyan int(11) auto_increment primary key,
nikename varchar(20) null,
subject varchar(100) null,
date_created varchar(19) ,
ip_address varchar(15),
message mediumtext null,
email_address varchar(50) null,
zhuye_address varchar(50) null,
huifu_biaozi int(1) default 0 ,
huifu mediumtext null,
oicq varchar(20) null
)
3: 建立控制表:(同样要把这里起的名字放到config.php的$table_name_control里去)
结构如下:
leibie varchar(20) primary key,
value varchar(20) null
也可以用下面的SQL语句:
create table your_control_table(
leibie varchar(20) primary key,
value varchar(20) null
)
因为这是你的控制表,所以要自己加入控制记录两条;
SQL语句为:
插入删除密码:
insert into your_control_tble(
leibie,
value)
values
(delete,'1332');
插入回复密码:
insert into your_control_tble(
leibie,
value)
values
(huifu,'1332');
这样放进去的密码为:123,用户名为空!
怎么计算密码和插入的值的关系呢?
是这样的,你的密码 ,如123 把三位数上的各位加起来,等于6,然后把6乘以222就是密码值!!!
6*222=1332.
知道了这关系,当然你可以改成其它的密码了.
不过用户名要为空,,,
这实行的简单加密的原理可以参照主页 http://cxg168.126.com 的三位数.
4: 一切完成,然后只要把除了readme.txt外的文件上传就行了.
如还有什么问题请联系我.
下面是联系我的方法(意见返回):
--------------------------------------------------------------------
?我的留言本: http://little.oso.com.cn
我的OICQ: 873221
我的e-mail: cxg168@sohu.com
---------------------------------------------------------------------
最新技术文章: