标签归档:php

ecshop和discuz的2段代码

最近想装一下ecshop和discuz2个程序,装的时候看到2段代码
ecshop的

<script type=”text/javascript” src=”http://api.ecshop.com/checkver.php?ver=<?php
 echo $this->_var['ecs_version']; ?>&lang=<?php
 echo $this->_var['ecs_lang']; ?>&release=<?php 
echo $this->_var['ecs_release']; ?>&php_ver=<?php 
echo $this->_var['sys_info']['php_ver']; ?>&mysql_ver=<?php 
echo $this->_var['sys_info']['mysql_ver']; ?>&ocount=<?php 
echo $this->_var['order']['stats']['oCount']; ?>&oamount=<?php
 echo $this->_var['order']['stats']['oAmount']; ?>&gcount=<?php
 echo $this->_var['goods']['total']; ?>&charset=<?php
 echo $this->_var['ecs_charset']; ?>”></script>

discuz的

<script src=”http://<?=$insenz&#91;url&#93;?>/news.php?id=<?=$insenz&#91;siteid&#93;?>&t=<?=$timestamp?>&k=<?=md5($insenz&#91;authkey&#93;.$insenz&#91;siteid&#93;.$timestamp.’Discuz!’)?>&insenz_version=<?=INSENZ_VERSION?>&discuz_version=<?=DISCUZ_VERSION.’ - ‘.DISCUZ_RELEASE?>&random=<?=random(4)?>”
 type=”text/javascript” charset=”UTF-8″></script>
echo ‘<sc’
.'ript language=”Jav’.'aScript” src=”
ht’.'tp:/’.'/cus’.'tome’.'r.disc’.'uz.n’.'et/n’
.'ews’.’.p’.'hp?’.bbsinformation().’”></s’.'cri’.'pt>’;

恩,很好很强大

php匹配所有中文的正则表达式

匹配所有中文字符的正则表达式是/[一-龥]/u,php代码如下。
要保存为utf-8编码

<?php
preg_match_all('/&#91;一-龥&#93;/u', '龥大家好一s々 Ⅳ 4 N ぁ Ψ Ж ㄩ ā 몸234adsf', $matchs);
print_r($matchs);
?>

运行结果如下:

Array
(
    [0] => Array
        (
            [0] => 龥
            [1] => 大
            [2] => 家
            [3] => 好
            [4] => 一
        )

)

下面是匹配所有不包含某个字符串的正则表达式:
^(?!.*?word).*$

share一下贝贝成长进度的php代码

主要功能是根据贝贝的出生日期来显示贝贝现在多大了,实时显示贝贝的成长。
用当前时间减去出生的日期,但是可以显示出来几岁,几个月,和几天。
天的算法有点问题,没有考虑到大小月和2月份。

function getDays() {
	putenv("TZ=Asia/Chongqing");
	$by = 2006;
	$bm = 7;
	$bd = 7;
	$rday="";

	$today = getdate();
	$by = $today[year] - $by;
	$bm = $today[mon] - $bm;
	$bd = $today[mday] - $bd;
	if ($bd < 0) {
		$bd = 30 + $bd;
		$bm--;
	}
	if ($bm < 0) {
		$bm = 12 + $bm;
		$by--;
	}
	#print $by."-".$bm."-".$bd;
	if ($by > 0) {
		$rday = $by . "岁";
	}
	if ($bm == 0&&$bd == 0){
		$rday .="生日";
	}else{
		if ($bm == 0){
			$rday.="零".$bd."天";
		}elseif ($bd == 0){
			$rday.=$bm."个月整";
		}else{
			$rday.=$bm."个月".$bd."天";
		}
	}
	return $rday;
}

 

用的时候直接

<?php echo getDays();?>

就可以了
空下来再完善以下,再写一个js的版本。
有bug请拍砖,有好的写法请留言。
您可以免费用,但是请留个到本页的链接。谢谢

php 模拟POST提交的2种方法

1.通过curl函数

$post_data = array();
$post_data['clientname'] = "test08";
$post_data['clientpasswd'] = "test08";
$post_data['submit'] = "submit";
$url='http://xxx.xxx.xxx.xx/xx/xxx/top.php';
$o="";
foreach ($post_data as $k=>$v)
{
    $o.= "$k=".urlencode($v)."&";
}
$post_data=substr($o,0,-1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
//为了支持cookie
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result = curl_exec($ch);

2.通过fsockopen

$URL=‘http://xxx.xxx.xxx.xx/xx/xxx/top.php';
$post_data['clientname'] = "test08";
$post_data['clientpasswd'] = "test08";
$post_data['submit'] = "ログイン";
$referrer="";
// parsing the given URL
$URL_Info=parse_url($URL);
// Building referrer
if($referrer=="") // if not given use this script as referrer
$referrer=$_SERVER["SCRIPT_URI"];
 
// making string from $data
foreach($post_data as $key=>$value)
$values[]="$key=".urlencode($value);

$data_string=implode("&",$values);
// Find out which port is needed - if not given use standard (=80)
if(!isset($URL_Info["port"]))
$URL_Info["port"]=80;
// building POST-request:
$request.="POST ".$URL_Info["path"]." HTTP/1.1\n";
$request.="Host: ".$URL_Info["host"]."\n";
$request.="Referer: $referrer\n";
$request.="Content-type: application/x-www-form-urlencoded\n";
$request.="Content-length: ".strlen($data_string)."\n";
$request.="Connection: close\n";
$request.="\n";
$request.=$data_string."\n";
$fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
fputs($fp, $request);
while(!feof($fp)) {
    $result .= fgets($fp, 128);
}
fclose($fp);

Snoopy 类(2)
sourceforge.net/projects/snoopy/
http://www.redalt.com/xref/trunk/nav.htm?wp-includes/class-snoopy.php.htm
HTTP类(1,2)
http://www.phpclasses.org/browse/download/1/file/5/name/http.php
PEAR HTTP_Request
http://pear.php.net/package/HTTP_Request

随机变化的.jpg图片

实现的原理很简单,就是apache的url_rewrite功能+php程序
url_rewrite代码

[test@test htdocs]$ cat .htaccess 
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^images/logo\.jpg$ /test/randomimg.php [L]
</IfModule>

php代码

<?php
/*
* Created on 2007-3-20
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
header("Content-Type: image/jpeg");
$dir    = './images/';
 
$imgarr=array();
if ($handle = opendir($dir)) {
    while (false !== ($file = readdir($handle))) {
        if (preg_match ("/(.*?)\.jpg$/i", $file) ) {
                array_push($imgarr,$dir.$file);
        }
    }
    closedir($handle);
}
//srand ((float) microtime() * 10000000);
readfile($imgarr&#91;array_rand ($imgarr)&#93;);
?> 

只要把把要显示的图片放到
$dir目录里就可以了:)
效果点击这里,或者刷新本页面,看右上角的图片。

delimiter of Regular Expression正则表达式的分隔符

The syntax for patterns used in these functions closely resembles Perl. The expression should be enclosed in the delimiters, a forward slash (/), for example. Any character can be used for delimiter as long as it’s not alphanumeric or backslash (\). If the delimiter character has to be used in the expression itself, it needs to be escaped by backslash. Since PHP 4.0.4, you can also use Perl-style (), {}, [], and <> matching delimiters. See Pattern Syntax for detailed explanation.

摘自php manual

任何非字母,数字和\的字符都可以当做delimiter,好处,估计是可以不和expression里面的字符冲突,比如,如果里面有一个/,那么就用#好了。

知识的力量。

在PHP中使用与Perl兼容的正则表达式

1 前言

PHP被大量的应用于Web的后台CGI开发,通常是在用户数据数据之后得出某种结果,但是如果用户输入的数据不正确,就会出现问题,比如说某人的生日是 “2月30日”!那应该怎么样来检验暑假是否正确呢? 在PHP中加入了正则表达式的支持,让我们可以十分方便的进行数据匹配。

2 什么是正则表达式:

简单的说,正则表达式是一种可以用于模式匹配和替换的强大工具。在几乎所有的基于UNIX/LINUX系统的软件工具中找到正则表达式的痕迹,例如: Perl或PHP脚本语言。此外,JavaScript这种客户端的脚本语言也提供了对正则表达式的支持,现在正则表达式已经成为了一个通用的概念和工具,被各类技术人员所广泛使用。
在某个Linux网站上面有这样的话:”如果你问一下Linux爱好者最喜欢什么,他可能会回答正则表达式;如果你问他最害怕什么,除了繁琐的安装配置外他肯定会说正则表达式。”

继续阅读