YOYO的最新BLOG文章

Aug
31

在PHP里面统计时间的时候绝大多数是用UNIX时间戳计时的,我在测试这种计时的时候发现有一个上限,这个上限是:2147483647,也就是2038年1月19日11时14分07秒。

我在网上查了一下这个数字发现int类型值最大是2147483647,而且也有很多人遇到数值极限这个问题,还有很多人说银行存款无法超过这个数,这个数就是21亿多了,看来这个人真有钱,再仔细一瞅,发现是论坛里的银行,呵呵。

看到网上很多人说这个数是一个梅森素数,具体梅森素数是什么呢?经过查找是这样的:形如2^p-1的正整数,其中p是素数,常记为Mp 。若Mp是素数,则称为梅森素数。而网上说已发现的最大梅森素数是p=24036583,看来2147483647是不是梅森素数也是一个疑问。

对于做PHP的人来说,如果2147483647真是一个极限,那想想也确实是个问题,到2038年1月19日之后用什么计时呢?也许这不是我们应该操心的问题,可能到时候就有解决的办法了,千年虫都没难倒我们,这个php的计时怎么能难倒我们呢?!
阅读全文 ->

Tags: , ,
Posted in PHP | MySQL
Aug
23

很多人都以为htmlentities跟htmlspecialchars的功能是一样的,都是格式化html代码的,我以前也曾这么认为,但是今天我发现并不是这样的。

这两个函数在格式化带有英文字符的html代码的时候基本没啥问题,但是htmlentities对中文字符也不放过,这样得出来的结果是中文字符部分变为一堆乱码。当时做英文站的时候根本就没觉察到这个问题,而今天公司的一个收藏站却因为有有非英文字符而出现了问题,我最终查出来是htmlentities这个函数的问题,同时我也找到了htmlspecialchars这个函数。

对于这两个函数,php手册上都是英文做的解释,其中在htmlentities函数的说明部分有这么一段英文:

This function is identical to htmlspecialchars() in all ways, except with htmlentities(), all characters which have HTML character entity equivalents are translated into these entities.

从这句话中我们也可以看出来这两个函数虽然基本功能差不多,但是还是有细微的差别在里面的。再仔细看htmlspecialchars函数里面的一段话:

The translations performed are:

‘&’ (ampersand) becomes ‘&’

‘”‘ (double quote) becomes ‘”‘ when ENT_NOQUOTES is not set.

”’ (single quote) becomes ”’ only when ENT_QUOTES is set.

‘<’ (less than) becomes ‘<’

‘>’ (greater than) becomes ‘>’

阅读全文 ->

Jul
26

做网页的时候,分页是一个很繁琐的问题,有些时候需要重复很多次,所以今天我写了一个分页函数,直接调用即可。

函数如下:

function pageNum($file,$page,$page_num,$pn=5){
/*
$file 当前分页的页面
$page 当前为哪一页
$page_num 所有页面的总数
$pn 定义当前页左右两侧显示的页数,默认是5
*/

 
//处理前翻按钮
if($page==1){
echo 'Previous';
}elseif($page==2){
echo '<a href="'.$file.'?page=1">Previous</a>';
}else{
echo '<a href="http://blog.fesite.com/wp-admin/%27.$file.%27?page=%27.%20%28$page-1%29%20.%27">Previous</a>';
}
 
//处理中间的数字部分
for($i=1;$i&lt;=$page_num;$i++){
if($i==1){
if($page==1){
echo '<a style="background-color: #99ccdd"><strong>'.$i.'</strong></a>';
}else{
echo '<a href="'.$file.'?page=1">1</a>';
}
}elseif($i==$page_num){
if($page==$i){
echo '<a style="background-color: #99ccdd"><strong>'.$i.'</strong></a>';
}else{
echo '<a href="'.$file.'?page='.$i.'">'.$i.'</a>';
}
}elseif($i&lt;=$page+$pn &amp;&amp; $i&gt;=$page-$pn){
if($page==$i){
echo '<a style="background-color: #99ccdd"><strong>'.$i.'</strong></a>';
}else{
echo '<a href="'.$file.'?page='.$i.'">'.$i.'</a>';
}
}else{
if($i==$page+($pn+1) || $i==$page-($pn+1)){
echo '...';
}
}
}
 
//处理后翻按钮
if($page==$page_num){
echo 'Next';
}else{
echo '<a href="http://blog.fesite.com/wp-admin/%27.$file.%27?page=%27.%20%28$page+1%29%20.%27">Next</a>';
}
}

阅读全文 ->

Jun
15

这几天在做一个手机软件的网站,在上传jar文件的时候,涉及到一个生成jad文件的问题,查找了很多资料都没找到解决办法,在和斯大哥讨论之后,终于找到一个比较好的办法。代码如下:

$zip = zip_open("berggi_email_english.jar");
 
if ($zip) {
 
while ($zip_entry = zip_read($zip)) {
/*
echo "Name: " . zip_entry_name($zip_entry) . "\n";
echo "Actual Filesize: " . zip_entry_filesize($zip_entry) . "\n";
echo "Compressed Size: " . zip_entry_compressedsize($zip_entry) . "\n";
echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\n";
*/

if(zip_entry_name($zip_entry)=="META-INF/MANIFEST.MF"){
 
if (zip_entry_open($zip, $zip_entry, "r")) {
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
$handle = fopen("berggi_email_english.jad","w");
fwrite($handle, $buf);
 
echo "$buf\n";
 
zip_entry_close($zip_entry);
}
}
}
 
zip_close($zip);
 
}

#update 2007-3-8: 使用上面的程序需要服务器有ZIP扩展的支持才可以;上面的zip_open()的参数必须是完整的url地址才可以,否则zip_read这里会出错,具体请查看PHP网站zip_read的帮助文档,在文档下面的用户评论里面就有说明。

Tags: , ,
Posted in PHP | MySQL, 刀光剑影
Jun
04

最近弄个了wordpress的blog系统,在找主题的时候发现那么多主题,竟然没有一个令我满意的,没有办法,我决定自己做一个。开始的时候,怎么做怎么不满意,都想放弃了,但是周末两天我还是把他做出来了,现在看上去好多了,自己还算满意,我把它放在了WebFox站点上做测试,有兴趣的朋友可以去看看。

我之前其实发现了一个比较好的主题,就是nicky的blog上面用的那个主题,但是我一直没找到从哪里下的,今天才知道是自己做的,而且就在今天,他发布了他的主题,我真是哭笑不得。不够他的主题我还是下载下来了,研究一下吧。

我这个主题也会不断的完善,希望它会越来越漂亮,越来越实用。

主题链接站点:WebFox

May
20

由于这个问题找的人还是非常多,所以今天我把它从我原来的blog上转过来,希望对大家有所帮助。

这篇文章是我去年的时候写的,那时候还没用PHP,所以闰年的计算方法没有PHP的,今天在这里补充上这段代码,$y代表年份:

第一种算法:

if($y%400==0 || ($y%4==0 && $y%100!=0)){
echo "";
}else{
echo "不是";
}

第二种算法:

if($y%4==0 && ($y%400==0 || $y%100!=0)){
echo "";
}else{
echo "不是";
}

重看自己写的文章,发现自己总结的两条判断条件有点模糊,可能不看程序还真看不出来,那我就再总结一下。

判断某一年是不是闰年的条件是:能被4整除且不可以被100整除,或者能被400整除。
阅读全文 ->

Sep
27

本人确实是比较笨,想了好久了就没想到一个好办法来解析百度搜索的url地址,今天终于写出来了一个,不容易啊,希望对所有看到的朋友有用。

function getkeyword($url)
{
$sz=parse_url($url);
//print_r($sz);
if ($sz["host"]=="www.baidu.com"){
$arr=explode("&amp;",substr(strstr($sz["query"],"wd="),3));
$keyword=urldecode($arr[0]);
return $keyword;
}else{
return $url;
}
}
echo getkeyword("http://www.baidu.com/s?wd=%B4%F3%BB%B0%CE%F7%D3%CE%D0%A1%CB%B5&amp;cl=3");

返回的值是“大话西游小说”。

现在太晚了,来不及写google的了,明天写,睡觉先。。。
阅读全文 ->

Tags: , ,
Posted in PHP | MySQL, 刀光剑影
Sep
23

最近在网上转,发现了一个用PHP写的解析RSS的好工具——MagpieRSS,它支持绝大部分的RSS调用,而且支持UTF-8编码,不过最近有些人说是用的时候出现乱码,下面我就给大家简单的说一下。可以说,MagepieRSS的使用是很简单的,在程序的README和INSTALL里面都有详细的使用说明。具体代码如下:

require_once(rss_fetch.inc);
$url = $_GET['url'];
$rss = fetch_rss( $url );
 
echo "Channel Title: " . $rss-&gt;channel['title'] . "
 
";
echo "
<ul>
";
foreach ($rss-&gt;items as $item) {
$href = $item['link'];
$title = $item['title'];
echo "
    <li><a href=
"http://blog.fesite.com/wp-admin/$href">$title</a></li>
";
}
echo
"</ul>
";
?>

可能有些人在打开中文的调用时是空白的,什么都不显示,这主要是编码的问题,你可以在上面的程序的最上面加入下面的一句:

define(’MAGPIE_OUTPUT_ENCODING’, ‘UTF-8′);//UTF-8格式

但是这样加了之后,很多人会看到乱码,这很可能是你的浏览器的默认编码不对,你可以手动选择UTF-8编码就可以了,你也可以在显示这些内容的页面定义显示的编码:

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />

这样的话,只要你的IE浏览器编码设置为自动选择的时候就可以正常显示了。 而很多时候我们想用GB2312,那我们可以用PHP里面的一个转化函数(mb_convert_encoding或iconv)来实现UTF-8到GB2312的转化。下面是mb_convert_encoding的实例:

mb_convert_encoding( $rss->channel['title'], ‘GB2312′, ‘UTF-8′ );

不过在用mb_convert_encoding()函数的时候,别忘了在php.ini里面把extension=php_mbstring.dll前面的分号去掉,把mbstring扩展加近来。 MagpieRSS是一个很好的开源的程序,对于我们这些经常制作网站的人来说,是相当好用的一个工具,希望大家喜欢。