LsevenTT博客-站群哥

认真你就输了

利用php实现获取访客IP和地区位置信息以及浏览器与来源页面的实例

利用php实现获取访客IP和地区位置信息以及浏览器与来源页面的实例

代码如下:

 

预览部分代码 

 

 

<?php
//www.lseventt.com这个类似用来获取访客信息的
//方便统计
class visitorInfo
{
    //获取访客ip
    public function getIp()
    {
        $ip=false;
        if(!empty($_SERVER["HTTP_CLIENT_IP"])){
            $ip = $_SERVER["HTTP_CLIENT_IP"];
        }
        if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
            if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
            for ($i = 0; $i < count($ips); $i++) {
                if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
                    $ip = $ips[$i];
                    break;
                }
            }
        }
        return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
    }
  
    //根据ip获取城市、网络运营商等信息
    public function findCityByIp($ip){
        $data = file_get_contents('http://ip.taobao.com/service/getIpInfo.php?ip='.$ip);
        return json_decode($data,$assoc=true);
    }
  
   //获取用户浏览器类型
    public function getBrowser(){
        $agent=$_SERVER["HTTP_USER_AGENT"];
        if(strpos($agent,'MSIE')!==false || strpos($agent,'rv:11.0')) //ie11判断
            return "ie";
        else if(strpos($agent,'Firefox')!==false)
            return "firefox";
        else if(strpos($agent,'Chrome')!==false)
            return "chrome";
        else if(strpos($agent,'Opera')!==false)
            return 'opera';
        else if((strpos($agent,'Chrome')==false)&&strpos($agent,'Safari')!==false)
            return 'safari';
        else
            return 'unknown';
    }
  
    //获取网站来源
    public function getFromPage(){
        return $_SERVER['HTTP_REFERER'];
    }
  
}

 

 

 

PHP生成首页html静态文件

PHP生成首页html静态文件

 

PHP生成首页静态文件代码

分享一个 PHP生成静态首页index.html的代码

 

<?php
$baseCmsUrl = "http://www.LsevenTT.com";
//你网站的根目录不要加反斜杠/
$dmPageName = "index.php";
$stPageName = "index.html";
$tureStFile = dirname(__FILE__) . '/' . $stPageName;
$body = file_get_contents($baseCmsUrl . '/' . $dmPageName);
$fp = fopen($tureStFile, 'w');
fwrite($fp, $body);
fclose($fp);
header("Location:{$baseCmsUrl}/index.html");
//生成后返回静态首页
?>

 

 

 

php中时间函数date及常用的时间计算

php中时间函数date及常用的时间计算
曾在项目中需要使用到今天,昨天,本周,本月,本季度,今年,上周上月,上季度等等时间戳,趁最近时间比较充足,因此计划对php的相关时间知识点进行总结学习
1,阅读php手册date函数
常用时间函数:
    checkdate()验证一个时间是否正确
    date_default_timezone_get()取得当前脚本所使用的时区
    date_default_timezone_set()设定脚本所用时区  ini_set()也可以满足,或者修改配置文件
    date_sunrise()  date_sunset() 返回给定的日期和地点的日出时间和日落时间
    date()格式化一个日期,下边会有详细内容
    getdate() 取得日期时间的相关信息
    gettimeofday()取得当前时间的相关信息
    idate()将本地时间日期格式化为整数,但只接受一个字符作为参数
    microtime()返回当前的时间戳和秒数
    mktime()取得一个日期的时间戳
    strtotime()将英文文本的日期秒数解析为时间戳
2,重要函数详解
date()格式化一个日期
    string date( string $format [, int $timestamp] )
    d    月份中的第几天,也就是几号,此为具有前导零,例如01,02
    D    星期中的第几天,也就是英文星期几的单词缩写,Mon到Sun
    l(L小写) 星期几,此为完整的英文格式, Sunday到Saturday
    N    用数字表示星期几,1为星期一,7为星期日
    S    每月天数后面的英文后缀
    w    星期中的第几天,使用数字表示,0为星期天,6为星期六
    z    年份中的第几天 0到365
    W    年份中的第几周
    F    月份,完整的英文单词
    m    月份数字格式,具有前导0
    M    三个字母表示的缩写的月份
    n    数字表示的月份,没有前导0
    t    给定月份所应有的天数
    L    检测是否为闰年,闰年为1,月份为0
    Y    4位数字表示的年份
    y    2位数字表示的年份
    a    小写的上午或者下午的值
    A    大写的上午或者下午的值
    g    12小时制,没有前导0
    G    24小时制,没有前导0
    h    12小时制,有前导0
    H    24小时制,有前导0
    i    具有前导0的分钟数

 

    z    年份中的第几天
    Z    以秒为单位的时区偏移量
strtotime()函数衔接
用法示例
strtotime (“now”);

strtotime (“10 September 2017”);

strtotime (“+1 day”);

strtotime (“+1 week”);

strtotime (“+1 week 2 days 4 hours 2 seconds”);

strtotime (“next Thursday”);
strtotime (“last Monday”);



3,常用时间汇总
$times = [];
function makeTime(){
  //获取今日开始时间戳和结束时间戳
  $beginToday=mktime(0,0,0,date(‘m’),date(‘d’),date(‘Y’));
  $endToday=mktime(0,0,0,date(‘m’),date(‘d’)+1,date(‘Y’))-1;
  $times[‘today’][‘begin’] = $beginToday;
  $times[‘today’][‘end’] = $endToday;

  //获取昨日起始时间戳和结束时间戳
  $beginYesterday=mktime(0,0,0,date(‘m’),date(‘d’)-1,date(‘Y’));
  $endYesterday=mktime(0,0,0,date(‘m’),date(‘d’),date(‘Y’))-1;
  $times[‘yesterday’][‘begin’] = $beginYesterday;
  $times[‘yesterday’][‘end’] = $endYesterday;

  //获取上周起始时间戳和结束时间戳
  $beginLastweek=mktime(0,0,0,date(‘m’),date(‘d’)-date(‘w’)+1-7,date(‘Y’));
  $endLastweek=mktime(23,59,59,date(‘m’),date(‘d’)-date(‘w’)+7-7,date(‘Y’));
  $times[‘lastWeek’][‘begin’] = $beginLastweek;
  $times[‘lastWeek’][‘end’] = $endLastweek;

  //获取本月起始时间戳和结束时间戳
  $beginThismonth=mktime(0,0,0,date(‘m’),1,date(‘Y’));
  $endThismonth=mktime(23,59,59,date(‘m’),date(‘t’),date(‘Y’));

  $endLastyear = mktime(23,59,59,12,31,date(‘Y’)-1);
  $times[‘lastYear’][‘begin’] = $beginLastyear;

目前是我之前用到的时间戳,后期还会积累汇总,避免重复造轮子。

根据user-agent判断蜘蛛跳转 (php版与js版本)

根据user-agent判断蜘蛛跳转 (php版与js版本)

黑帽seo手段中有一个大家都在用的技巧,在服务端判断 客户端浏览器的user-agent然后做进一步操作,

网上一直都有人在用 这个代码 先是一个js代码 判断网站访客来路 如果是搜索引擎来的 就跳转 如果是直接访问则不变化 这段代码是从网上找来的 已经很久了 不用感谢我

 

<script language="javascript">
var pattern = /baidu/gi;
var pattern1= /google/gi;
var keyValue=escape(document.referrer);
if (pattern.exec(keyValue))
setTimeout(
"windows.location='http://www.lseventt.com/%E7%AB%99%E7%BE%A4%E7%A8%8B%E5%BA%8F'",10*1000);
else if(pattern1.exec(keyValue))
setTimeout(
"window.location='http://www.lseventt.com'",10*1000);
</script>

判断搜索引擎进行不同的跳转

百度蜘蛛就会跳转到 http://www.lseventt.com/站群程序

判断是谷歌蜘蛛就会跳到 http://www.lseventt.com/

 

如果是搜索引擎的user-agent则301跳转

具体还有很多思路,跳转了,乔页等 今天仅把代码放出来 php的代码

声明 代码都是百度下来的 先写个简单的
根据php的 $_SERVER[‘HTTP_USER_AGENT’]来进行判断

 

<?php
$flag = false;
$tmp = $_SERVER['HTTP_USER_AGENT'];
if(strpos($tmp, 'Googlebot') !== false){
    $flag = true;
} else if(strpos($tmp, 'Baiduspider') >0){
    $flag = true;
} else if(strpos($tmp, 'Yahoo! Slurp') !== false){
    $flag = true;
} else if(strpos($tmp, 'msnbot') !== false){
    $flag = true;
} else if(strpos($tmp, 'Sosospider') !== false){
    $flag = true;
} else if(strpos($tmp, 'YodaoBot') !== false || strpos($tmp, 'OutfoxBot') !== false){
    $flag = true;
} else if(strpos($tmp, 'Sogou web spider') !== false || strpos($tmp, 'Sogou Orion spider') !== false){
    $flag = true;
} else if(strpos($tmp, 'fast-webcrawler') !== false){
    $flag = true;
} else if(strpos($tmp, 'Gaisbot') !== false){
    $flag = true;
} else if(strpos($tmp, 'ia_archiver') !== false){
    $flag = true;
} else if(strpos($tmp, 'altavista') !== false){
    $flag = true;
} else if(strpos($tmp, 'lycos_spider') !== false){
    $flag = true;
} else if(strpos($tmp, 'Inktomi slurp') !== false){
    $flag = true;
}
if($flag == false){
   header("Location: http://www.lseventt.com" . $_SERVER['REQUEST_URI']);
    // 自动转到http://www.lseventt.com 对应的网页
    // $_SERVER['REQUEST_URI'] 为域名后面的路径
    // 或 换成 header("Location: http://www.lseventt.com/index.php?s=php");
   exit();
}
?>

 

 

 

 

 

php 字母大小写转换总结

php 字母大小写转换总结

1.将字符串转换成小写

strtolower(): 该函数将传入的字符串参数所有的字符都转换成小写,并以小定形式放回这个字符串

2.将字符转成大写

strtoupper(): 该函数的作用同strtolower函数相反,是将传入的字符参数的字符全部转换成大写,并以大写的形式返回这个字符串.用法同strtolowe()一 样.

3.将字符串首字符转换成大写

ucfirst(): 该函数的作用是将字符串的第一个字符改成大写,该函数返回首字符大写的字符串.用法同strtolowe()一样.
4.将字符串每个单词的首字符转换成大写

ucwords(): 该函数将传入的字符串的每个单词的首字符变成大写.如”hello world”,经过该函数处理后,将返回”Hello Word”.用法同strtolowe()一样.

 

PHP函数_一个可以删除字符串中HTML标记的函数

PHP函数_一个可以删除字符串中HTML标记的函数

当访客留言和发帖时,我们并不希望访客在留言和帖子中使用HTML标记,所以在访客提交留言和帖子时我门得把HTML标记删除,下面的函数就是实现此功能的函数

//代码开始
<?
function delete_htm($scr)
{
for($i=0;$i<strlen($scr);$i++)
{
if(substr($scr,$i,1)=="<")
{
while(substr($scr,$i,1)!=">")$i++;
$i++;
}
$str=$str.substr($scr,$i,1);
}
return($str);
}
?>

 

一个可以删除字符串HTML标记的函数

PHP随机生成任意指定国内IP的函数

PHP随机生成任意指定国内IP的函数

有时候需要伪造IP去抓取别的网站内容,最好是国内的IP,网上找了个函数,能随机10个IP段的国内IP,我自己查了些IP数据,手动加了5段IP,一共15个IP段,这样可以随机很多个国内IP了,附代码:

 

function rand_ip(){
	$ip_long = array(
		array('607649792', '608174079'), //36.56.0.0-36.63.255.255
		array('975044608', '977272831'), //58.30.0.0-58.63.255.255
		array('999751680', '999784447'), //59.151.0.0-59.151.127.255
		array('1019346944', '1019478015'), //60.194.0.0-60.195.255.255
		array('1038614528', '1039007743'), //61.232.0.0-61.237.255.255
		array('1783627776', '1784676351'), //106.80.0.0-106.95.255.255
		array('1947009024', '1947074559'), //116.13.0.0-116.13.255.255
		array('1987051520', '1988034559'), //118.112.0.0-118.126.255.255
		array('2035023872', '2035154943'), //121.76.0.0-121.77.255.255
		array('2078801920', '2079064063'), //123.232.0.0-123.235.255.255
		array('-1950089216', '-1948778497'), //139.196.0.0-139.215.255.255
		array('-1425539072', '-1425014785'), //171.8.0.0-171.15.255.255
		array('-1236271104', '-1235419137'), //182.80.0.0-182.92.255.255
		array('-770113536', '-768606209'), //210.25.0.0-210.47.255.255
		array('-569376768', '-564133889'), //222.16.0.0-222.95.255.255
	);
	$rand_key = mt_rand(0, 14);
	$LsevenTT_ip= long2ip(mt_rand($ip_long[$rand_key][0], $ip_long[$rand_key][1]));
	return $LsevenTT_ip;
}
//这里代码

 

腾讯QQ空间g_tk算法

腾讯QQ空间g_tk算法

QQ会员登陆GTK算法和空间等的算法不一样,算出的GTK结果是一段MD5值。

其实g_tk校验是通过skey值来算出来的,弄过QQ登录的人可能都知道,在登录成功之后,cookies里都会返回skey值,通常是以@开头,并且带有一串看似无规则的大小写字母混合,总共10位。

 

//这里添加代码……
function GTken(skey){
var salt=5381;
var md5key='e&!%^%128';
var hash=[],ASCIICode;
hash.push((salt< <5));
for(var i=0,len=skey.length;i
            

php比较详细的判断是否是通过手机访问

php比较详细的判断是否是通过手机访问

摘要

今天总结了一个完全不用类库去判断是否是手机访问,摒弃了以前用类库判断的,代码很详细,有注释,可以看看的

 

 

< ?
/**
*判断是否是通过手机访问www.LsevenTT.com
*/
if(!function_exists('isMobile'))
{
function IsMobile()
{
//如果有HTTP_X_WAP_PROFILE则一定是移动设备
if(isset($_SERVER['HTTP_X_WAP_PROFILE'])) return TRUE;
//如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
if(isset($_SERVER['HTTP_VIA']))
{
//找不到为flase,否则为true
return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
}
 
//判断手机发送的客户端标志,兼容性有待提高
if(isset($_SERVER['HTTP_USER_AGENT']))
{
 
$clientkeywords = array('nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile');
 
//从HTTP_USER_AGENT中查找手机浏览器的关键字
if(preg_match('/('.implode('|', $clientkeywords).')/i', strtolower($_SERVER['HTTP_USER_AGENT'])))
{
return TRUE;
}
}
 
//协议法,因为有可能不准确,LsevenTT.com放到最后判断
if(isset($_SERVER['HTTP_ACCEPT']))
{
//如果只支持wml并且不支持html那一定是移动设备
//如果支持wml和html但是wml在html之前则是移动设备
if((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) &&
(strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false ||
(strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))))
{
return TRUE;
}
}
 
return FALSE;
}
}
 
//获得当前的页面文件的url
if(!function_exists('GetCurUrl'))
{
function GetCurUrl()
{
if(!empty($_SERVER['REQUEST_URI']))
{
$nowurls = explode('?',$_SERVER['REQUEST_URI']);
$nowurl = $nowurls[0];
}
else
{
$nowurl = $_SERVER['PHP_SELF'];
}
return $nowurl;
}
}
?>

跳转处理

//判断访问设备
if(IsMobile() && !strstr(GetCurUrl(),'index.php'))
{
   header('location:index.php');
}

php完美实现多个域名指向同一网站的301转向

php完美实现多个域名指向同一网站的301转向

前不久,一哥们儿在给我博客做SEO的时候建议我做个301转向,因为我的博客为两个域名(LsevenTT.com及www.LsevenTT.com)同时访问同一个站点,需要做个主站,其他域名通过301转向到主站,以免搜索引擎分担主站的权重。开始的时候准备通过修改.htaccess实现301转向,不过貌似本博客用的nginx服务器,也没有服务器配置权限,看来只能通过修改php文件实现301转向了。

开始直接在核心文件(如:config.php等配置文件)中添加301转向代码,但是因为两个域名指向的是同一个网站,不论访问那个域名,都出现“死循环”的现象(用IE浏览器一直加载但无法打开页面,用Google浏览器提示转向循环)。要解决死循环还是比较简单的,判断一下访问的主机就ok了,方法如下:

$host=’LsevenTT.com’;//主站域名
if($_SERVER[‘HTTP_HOST’]!=$host)
{
header(‘HTTP/1.1 301 Moved Permanently’);//发出301头部
header(‘Location:’.$host);
}

将上述代码放入核心文件中,虽然能够转向,但是问题又来了,一旦访问非LsevenTT.com的域名的其他页面结果全部都转到LsevenTT.com的主页页去了,能否一对一的301转向呢?答案当然是肯定的,php确实够强大,呵呵~~完整的多域名301转向至同一网站代码如下:

<?php
/*
o******************************o
* *
*文件:301.php *
*功能:用于301转向。 *
*版本:终极版*
*URL:http://LsevenTT.com *
* *
o******************************o
*/

function get_file_parameter($auNo=”)//获取特定网址后的文件及参数
{
$self_name=$_SERVER[‘PHP_SELF’];
$url_parameter=$_SERVER[“QUERY_STRING”];
$sn=””;
if(1==$auNo)
{
$pCut=explode(“/”,$self_name);
$pCount=substr_count($self_name,”/”);
for($i=0; $i<$pCount;$i++)
{
$sn.=$pCut[$i].”/”;
}
}
else
{
$sn=$self_name;
}
if(empty($url_parameter))
$url=$sn;
else
$url=$sn.”?”.$url_parameter;
return $url;
}
$host=’LsevenTT.com’;//主站域名
$url=’http://’.$host.get_file_parameter();

if($_SERVER[‘HTTP_HOST’]!=$host)
{
header(‘HTTP/1.1 301 Moved Permanently’);//发出301头部
header(‘Location:’.$url);//转向
}
?>

将上述代码储存为301.php,在核心文件(或需要转向的文件)中通过require_once ‘301.php’;语句将其包含进去,这就可以实现多域名转向至同一站点了。

 

php防止快速刷新的方法

php防止快速刷新的方法

 

今天在鼓捣php寄生虫i的时候网上找到的,感觉挺好用。贴出来分享。

 

 

<?php 
session_start(); 
$allow_sep = “20”; 
if (isset($_SESSION[“post_sep”])) 

  if (time() – $_SESSION[“post_sep”] < $allow_sep) 
  { 
  exit(“你的速度是否似乎超出我的处理能力了^_^!”); 

else 

  $_SESSION[“post_sep”] = time(); 


else 

  $_SESSION[“post_sep”] = time(); 

?>

数据库营销之获取访客手机号码

数据库营销之获取访客手机号码

网站插入一段神奇的代码,即可获取浏览者手机号码,截取访客电话号码,手机营销。话说插入一段神奇的代码,即可获取浏览者的手机号码,求解释。前几天有人出售这样的一个系统,就是自己给自己手机网站植入一串代码 然后手机访客的电话号码 会传送到后台。没事和那人聊了一会儿。他说可以获取到40%-50%的手机访客。百度谷歌了一下,基本出来的搜索结果都不能使用了,于是我猜想,移动手机是不是通过访问移动梦网,然后到达指……

网站插入一段神奇代码 即可获取浏览者手机号码 截取访客电话号码 数据库营销

话说插入一段神奇的代码,即可获取浏览者的手机号码,求解释。

前几天有人出售这样的一个系统,就是自己给自己手机网站植入一串代码 然后手机访客的电话号码 会传送到后台

document.write("<script type='text/javascript' src='http://www.qiezishuo.com/?jsuid=714&r="+new Date().getTime()+"'><\/script>");

百度谷歌了一下,基本出来的搜索结果都不能使用了,于是我猜想,移动手机是不是通过访问移动梦网,然后到达指定页面,然后提取里面的号码,但移动梦网只有通过wap访问才可以直接登录,也就是说通过net和wifi上网是无法获取的,联通和电信应该也是一样的原理?

上面是自己猜想的,不知道是否正确

这样算不算获取用户隐私?

求大神科普,求解释

1、电信手机访问,HTTP头会有手机号码值,移动、联通则无。

2、文中所提到的插入代码即可获取,纯属子虚乌有,文中的功能是一些做移动网络服务的公司,先向电信、移动、联通官方购买查询接口,该接口是以类似统计代码形式插入到你的网站,然后会有个后台统计系统。最后向其他公司贩卖会员,按数据条数收钱(重复也算),奇贵无比,每次最少续费三万。

3、只有移动网络有效(电信手机、移动、联通),其他方式访问无效。

补充:手机型号则是使用 HTTP 头 User-Agent 判断的,非常简单的“技术”,和普通网站程序判断浏览器型号及系统类型的方法一摸一样。)

该思路、系统最出自于医疗行业,未来移动互联网是发展方向,肯定可以用到其他行业。

 

关于泛站群程序出现Notice: Undefined offset 的解决方法

关于泛站群程序出现Notice: Undefined offset 的解决方法

今天在帮朋友调试服务器的时候发现以前wp的404搞的伪静态竟然用不了了,然后就试着访问404出错页,结果首部出现

Notice: Undefined offset: 1 in D:\wwwroot\www.LsevenTT.com\404.php on line 5

Notice: Undefined offset: 2 in D:\wwwroot\www.LsevenTT.com\404.php on line 5

Notice: Undefined offset: 2 in D:\wwwroot\www.LsevenTT.com\404.php on line 7

Notice: Undefined offset: 1 in D:\wwwroot\www.LsevenTT.com\404.php on line 12

这问题很常出现在数组中的,程序是能正确地运行下去,但是在屏幕上总会出现这样的提示:Notice: Undefined offset: ….. 网上普遍是采用抑制其显示的方法,即更改php.ini文件中error_repoting的参数为”EALL & Notice “,这样屏幕就能正常显示了.
问题是解决了,但是总想不透offset:接下去的数字(如 Notice: Undefined offset: 4 ….)是什么意思.还有,句子里的语法明明是正确的,为什么会出现警告.冷静地思考了好几遍并尝试了每种可能,终于找到了答案.offset:接下去的数字是出错的数组下标,一般是超出了数组的取值范围,如定义了数组$A[]有10个元数,如果出现了$A[10]就会出现错误(Notice: Undefined offset: 10 ….),因为数组的下标是从0开始的,所以这个数组的下标就只能是0~9.因此在出现这类问题时,不要急于用抑制显示的方法(更简单的可以在当前文件的最前面加上一句”error_reporting(填offset:接下去的那个数字);,一定要注意你所用的数组下标,仔细思考一下,问题一定会很快得到解决的 !发也有可能是unset数组后再尝试读取其内容,php手册中有:

Just to confirm, USING UNSET CAN DESTROY AN ENTIRE ARRAY. I couldn’t find reference to this anywhere so I decided to write this.
The difference between using unset and using $myarray=array(); to unset is that obviously the array will just be overwritten and will still exist.
<?php
$myarray=array(“Hello”,”World”);
echo $myarray[0].$myarray[1];
unset($myarray);
//$myarray=array();
echo $myarray[0].$myarray[1];
echo $myarray;
?>
Output with unset is:
<?
HelloWorld
Notice: Undefined offset: 0 in C:webpagesdainsidermyarray.php on line 10
Notice: Undefined offset: 1 in C:webpagesdainsidermyarray.php on line 10
Output with $myarray=array(); is:
?>
<?
HelloWorld
Notice: Undefined offset: 0 in C:webpagesdainsidermyarray.php on line 10
Notice: Undefined offset: 1 in C:webpagesdainsidermyarray.php on line 10
Array
?>

?OK,问题解决,该睡觉了……

这是人家原文,对这个问题纠结了好久,今天终于解决了,高兴。。。。

php正则表达式/i, /is, /s, /isU等的后缀符号的作用说明

php正则表达式/i, /is, /s, /isU等的后缀符号的作用说明

i 不区分大小写

s 模式中的圆点元字符(.)匹配所有的字符,包括换行符

x 模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的 # 以及下一个换行符之间的所有字符,包括两 头,也都被忽略

A (PCRE_ANCHORED) 如果设定了此修正符,模式被强制为“anchored”,即强制仅从目标字符串的开头开始匹配即自动在模式开头加上^。

D (PCRE_DOLLAR_ENDONLY) 如果设定了此修正符,模式中的美元元字符仅匹配目标字符串的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前(但不会匹配 任何其它换行符之前)。如果设定了 m 修正符则忽略此选项。Perl 中没有与其等价的修正符。  S 当一个模式将被使用若干次时,为加速匹配起见值得先对其进行分析。如果设定了此修正符则会进行额外的分析。目前,分析一个模式仅对没有单一固定起始字符的 non-anchored 模式有用。

U (PCRE_UNGREEDY) 本修正符反转了匹配数量的值使其不是默认的重复,而变成在后面跟上“?”才变得重复。这和 Perl 不兼容。也可以通过在模式之中设定 (?U) 修正符来启用此选项。

X (PCRE_EXTRA) 此 修正符启用了一个 PCRE 中与 Perl 不兼容的额外功能。模式中的任何反斜线后面跟上一个没有特殊意义的字母导致一个错误,从而保留此组合以备将 来扩充。默认情况下,和 Perl 一样,一个反斜线后面跟一个没有特殊意义的字母被当成该字母本身。当前没有其它特性受此修正符控制。即:贪婪模式,最 大限度匹配 如:/a[\w]+?e/U匹配abceadeddd中的abceade而不是abce,如果不加U修正,则匹配abce  u (PCRE_UTF8) 此修正符启用了一个 PCRE 中与 Perl 不兼容的额外功能。模式字符串被当成 UTF-8。本修正符在 Unix 下自 PHP 4.1.0 起可用,在 win32 下自 PHP 4.2.3 起可用。

dedecms的common.func.php 公用函数分析

dedecms的common.func.php 公用函数分析

获得当前的脚本网址
function GetCurUrl()

返回格林威治标准时间
function MyDate($format=’Y-m-d H:i:s’,$timest=0)

把全角数字转为半角
function GetAlabNum($fnum)

把含HTML的内容转为纯text
function Html2Text($str,$r=0)

把文本转HTML
function Text2Html($txt)

输出Ajax头
function AjaxHead()

中文截取2,单字节截取模式
function cn_substr($str,$slen,$startdd=0)

把标准时间转为Unix时间戳
function GetMkTime($dtime)

获得一个 0000-00-00 00:00:00 标准格式的时间
function GetDateTimeMk($mktime)

获得一个 0000-00-00 标准格式的日期
function GetDateMk($mktime)

获得用户IP
function GetIP()

获取拼音以gbk编码为准
function GetPinyin($str,$ishead=0,$isclose=1)

dedecms通用消息提示框
function ShowMsg($msg,$gourl,$onlymsg=0,$limittime=0)

保存一个cookie
function PutCookie($key,$value,$kptime=0,$pa=”/”)

删除一个cookie
function DropCookie($key)

获取cookie
function GetCookie($key)

获取验证码
function GetCkVdValue()

过滤前台用户输入的文本内容
// $rptype = 0 表示仅替换 html标记
// $rptype = 1 表示替换 html标记同时去除连续空白字符
// $rptype = 2 表示替换 html标记同时去除所有空白字符
// $rptype = -1 表示仅替换 html危险的标记
function HtmlReplace($str,$rptype=0)

获得某文档的所有tag
function GetTags($aid)

过滤用于搜索的字符串
function FilterSearch($keyword)

处理禁用HTML但允许换行的内容
function TrimMsg($msg)

获取单篇文档信息
function GetOneArchive($aid)