php 分页类函数

 更新时间:2016年11月25日 16:02  点击:1379

php 分页类函数
function getPageBar($count = 0)
{
    $bad_link_color = "#C0C0C0";
   
    $page["url"]           = eregi_replace("&page=[^&]+","",basename($_SERVER[SCRIPT_NAME])."?".$_SERVER[QUERY_STRING]);
   
    $page["result_count"]  = (string) $count;
    $page["this_page"]     = (empty($_GET["page"]))?"1":$_GET["page"];
    $page["this_page"]     = ($page["result_count"] == 0)?"0":$page["this_page"];

    $page["page_size"]     = $GLOBALS["option"]["page_size"];
    $page["page_count"]    = (string) ceil($page["result_count"]/$page["page_size"]);
   
    $page["first_page"]     = ($page["this_page"] > 1)?"<a href="".$page["url"]."&amp;page=1" title="首页"><span style="font-size:12px; font-weight: bold; font-familly: Courier;">&laquo;</span></a>":"";
    $page["rearward_page"]  = ($page["this_page"] < (int) $page["page_count"])?"<a href="".$page["url"]."&amp;page=".$page["page_count"]."" title="末页"><span style="font-size:12px; font-weight: bold; font-familly: Courier;">&raquo;</span></a>":"";
    $page["prev_page"]      = ($page["this_page"] > 1)?"<a href="".$page["url"]."&amp;page=".((int)$page["this_page"] - 1)."" title="上一页"><span style="font-size:12px; font-weight: bold; font-familly: Courier;">&#8249;</span></a>":"";
    $page["next_page"]      = ($page["this_page"] < (int) $page["page_count"])?"<a href="".$page["url"]."&amp;page=".((int)$page["this_page"] + 1)."" title="下一页"><span style="font-size:12px; font-weight: bold; font-familly: Courier;">&#8250;</span></a>":"";
   
    $page['start_page'] = ((int)$page["this_page"]-5<1)?1:(int)$page["this_page"]-5;
    $page['end_page'] = ((int)$page["this_page"]+5 > $page['page_count'])?(int)$page["page_count"]:(int)$page["this_page"]+5;

    for ($i = $page['start_page'];$i <= $page['end_page'];$i++)
    {
        $selected = ($_GET["page"] == $i)?"selected":"";
        $page["page_select"]  .= "<option value="$i" $selected>$i</option>";
        $page["page_list"]  .= ($i == $page["this_page"])?" <font color="red">$i</font> ":"<a href="".$page['url']."&amp;page=$i" title="第 ".$i." 页">[$i]</a>";
    }
   
   
    return $page;
}

获取用户IP地址与判断真实IP
function getIp() {
    if($_SERVER['HTTP_CLIENT_IP'])
    {
        return $_SERVER['HTTP_CLIENT_IP'];
    } elseif ($_SERVER['HTTP_X_FORWARDED_FOR']) {
        return $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        return $_SERVER['REMOTE_ADDR'];
    }
}

function get_real_ip()
{
        $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']);
}

tp.php 文件:

<?

/*

tq      天气

qs      趋势

rq      日期

wd      温度

fx      风向

address 地址

qq      805830

*/

include_once('./include/tq/function.inc.php');

$staid = sta_id();

$ip = getIp();

//$address = convertip($ip);

$address = addr();

echo $address." ";

function open($file,$type=''){

 

if($open=file($file)){

$count=count($open);

for($i=0;$i<$count;$i++){

$theget.=$open[$i];

 

}

 

}else{

die('请求过多,超时,请刷新');

}

 

 

return $theget;

 

}

 

$_str = open('http://www.weathercn.com/tqyb/detail.jsp?sta_id='.$staid);

 

//echo $_str;

 

/**

变量说明:

$str 要进行操作的字符串;

$split 拆分目标字符(串);

$from_no 从第几个开始;

$desc_y_n 顺取(〉0的值)还是倒取(0);

*/

//$_str = "aaa .1..aaa.2..aaa .3..aaa.4..aaa.5..bbb..7.bbb.8..bbb.9..bbb.10..bbb";

$split_a = "中国气象局";

$split_b = "时至";

 

$str_b = strstr($_str,$split_b);//寻找$split_b第一次出现的位置

$str_a = substr($_str,0,strpos($_str, $split_b));//可以取得字符串的指定长度子字符串

 

function _getStr_from_to($str,$split,$from_no,$desc_y_n)

{

$arr = explode($split,$str);

$size = sizeof($arr);

$from_no = ($from_no<=$size) ? $from_no : $size;

unset($_tmp_out_str);

if($desc_y_n)

{

//正序

for($i=$from_no;$i<$size;$i++)

{

$_tmp_out_str .= $split.$arr[$i];

}

}

else

{

$_tmp_from = $size - $from_no;

for($i=0;$i<$_tmp_from;$i++)

{

$_tmp_out_str .= $arr[$i].$split;

}

}

return $_tmp_out_str;

}

$srting = _getStr_from_to($str_a,"中国气象局",1,1);

 

//echo $srting;

 

preg_match_all('/alt="([^"]*)"/',$srting,$tq);

$tq = $tq[1];

if (is_array($tq))

            $tq = implode('转',$tq);

           

//print_r($tq);

echo $tq." ";

preg_match_all('/([0-9-]*℃)~([0-9-]*℃)/',$srting,$wd);

   $wd = $wd[0];

   $wd = $wd[0];

print_r($wd);

 

?>
复制代码function.inc.php 文件

<?php

// 获取用户IP地址

function getIp() {

    if($_SERVER['HTTP_CLIENT_IP'])

    {

        return $_SERVER['HTTP_CLIENT_IP'];

    } elseif ($_SERVER['HTTP_X_FORWARDED_FOR']) {

        return $_SERVER['HTTP_X_FORWARDED_FOR'];

    } else {

        return $_SERVER['REMOTE_ADDR'];

    }

}

 

function getFile($url)

{

    if($f=fopen("$url","r"))

    {

        while(!feof($f))

        {

            $s.=fgets($f);

        }

        fclose($f);

        return $s;

    } else {

        return false;

    }   

}

 

function putFile($file_name,$file_string)

{

    if($f=fopen($file_name,"w"))

    {

        fwrite($f, $file_string);

    }

    fclose($f);

}

 

function cnSubStr($string,$sublen) {

     if($sublen>=strlen($string)){

           return $string;

     }

     $s="";

     for($i=0;$i<$sublen;$i++){

           if(ord($string{$i})>127){

                 $s.=$string{$i}.$string{++$i};

                 continue;

           }else{

                 $s.=$string{$i};

                 continue;

           }

     }

     return $s."...";

}

 

function getPageBar($count = 0)

{

    $bad_link_color = "#C0C0C0";

   

    $page["url"]           = eregi_replace("&page=[^&]+","",basename($_SERVER[SCRIPT_NAME])."?".$_SERVER[QUERY_STRING]);

   

    $page["result_count"]  = (string) $count;

    $page["this_page"]     = (empty($_GET["page"]))?"1":$_GET["page"];

    $page["this_page"]     = ($page["result_count"] == 0)?"0":$page["this_page"];

 

    $page["page_size"]     = $GLOBALS["option"]["page_size"];

    $page["page_count"]    = (string) ceil($page["result_count"]/$page["page_size"]);

   

    $page["first_page"]     = ($page["this_page"] > 1)?"<a href="".$page["url"]."&page=1" title="首页"><span style="font-size:12px; font-weight: bold; font-familly: Courier;">&laquo;</span></a>":"";

    $page["rearward_page"]  = ($page["this_page"] < (int) $page["page_count"])?"<a href="".$page["url"]."&page=".$page["page_count"]."" title="末页"><span style="font-size:12px; font-weight: bold; font-familly: Courier;">&raquo;</span></a>":"";

    $page["prev_page"]      = ($page["this_page"] > 1)?"<a href="".$page["url"]."&page=".((int)$page["this_page"] - 1)."" title="上一页"><span style="font-size:12px; font-weight: bold; font-familly: Courier;">‹</span></a>":"";

    $page["next_page"]      = ($page["this_page"] < (int) $page["page_count"])?"<a href="".$page["url"]."&page=".((int)$page["this_page"] + 1)."" title="下一页"><span style="font-size:12px; font-weight: bold; font-familly: Courier;">›</span></a>":"";

   

    $page['start_page'] = ((int)$page["this_page"]-5<1)?1:(int)$page["this_page"]-5;

    $page['end_page'] = ((int)$page["this_page"]+5 > $page['page_count'])?(int)$page["page_count"]:(int)$page["this_page"]+5;

 

    for ($i = $page['start_page'];$i <= $page['end_page'];$i++)

    {

        $selected = ($_GET["page"] == $i)?"selected":"";

        $page["page_select"]  .= "<option value="$i" $selected>$i</option>";

        $page["page_list"]  .= ($i == $page["this_page"])?" <font color="red">$i</font> ":"<a href="".$page['url']."&page=$i" title="第 ".$i." 页">[$i]</a>";

    }

   

   

    return $page;

}

 

function getRows($table,$order='')

{

    if (!empty($order))

    {

        $order = explode(',',$order);

        $order = 'ORDER BY `'.$order[0].'` '.$order[1];

    }

    $query = dbQuery("SELECT * FROM `".$GLOBALS['prefix'].$table."` ".$order.";");

    while ($row = dbArray($query))

    {

        $link[$row['id']] = $row;

    }

    return $link;

}

 

function autoTime($time)

{

    preg_match('/([0-9]*)-([0-9]*)-([0-9]*) ([0-9]*):([0-9]*):([0-9]*)/',$time,$date);

    return mktime ($date[4],$date[5],$date[6],$date[2],$date[3],$date[1]);

}

 

function getTime() {

    $t = explode(' ', microtime());

    return $t[1] + $t[0];

}

 

function calendar($time)

{

    $start = mktime(0, 0, 0, date('m', $time), 1,   date('Y', $time));

    $prev_month['year']  = date('Y',$start-86400);

    $prev_month['month'] = date('m',$start-86400);

    $end   = mktime(0, 0, 0, date('m', $time)+1, 1,   date('Y', $time));

    $next_month['year']  = date('Y',$end);

    $next_month['month'] = date('m',$end);

    $sWeekday=array('日','一','二','三','四','五','六');

    //$sWeekday=array('S','M','T','W','T','F','S');

    $title=date('M Y', $time);

 

    $str = '';

    $str .= <<<END

<table class="calendar" cellspacing="1">

    <tr class="title">

        <th colspan="1"><a href=?mod=article&year={$prev_month['year']}&month={$prev_month['month']}><span style="font-size:12px; font-weight: bold; font-familly: Courier;">&laquo;</span></a></td>

        <th colspan="5">{$title}</td>

        <th colspan="1"><a href=?mod=article&year={$next_month['year']}&month={$next_month['month']}><span style="font-size:12px; font-weight: bold; font-familly: Courier;">&raquo;</span></a></td>

    </tr>

    <tr class="head">

        <th>{$sWeekday[0]}</td>

        <th>{$sWeekday[1]}</td>

        <th>{$sWeekday[2]}</td>

        <th>{$sWeekday[3]}</td>

        <th>{$sWeekday[4]}</td>

        <th>{$sWeekday[5]}</td>

        <th>{$sWeekday[6]}</td>

    </tr>

    <tr class="cbody">

 

END;

$year  = (empty($_GET['year']))?date('Y'):$_GET['year'];

$month = (empty($_GET['month']))?date('m'):$_GET['month'];

$query = dbQuery("SELECT FROM_UNIXTIME(date,'%e') as `day`,count(*) as `count` FROM `".$GLOBALS['prefix']."article`,`".$GLOBALS['prefix']."article_class` WHERE FROM_UNIXTIME(date,'%Y/%m') = '".$year."/".$month."' AND `status` = 'published' AND ".$GLOBALS['prefix']."article.class_id = ".$GLOBALS['prefix']."article_class.id AND `in_main_page` = 1 GROUP BY `day`;");

for ($i = 0;$i < mysql_num_rows($query);$i++)

{

    $row = dbArray($query);

    $calendar[$row['day']] = $row['count'];

}

 

    for ($i = 0;$i < date('w',$start);$i++)

    {

        $str.= '<td> </td>';

    }

    for($stamp=$start;$stamp<$end;$stamp+=86400) // loop through each day, which is 86400 seconds

    {

        $weekday=date('w', $stamp);

        $day = date('d', $stamp);

        if(date('Y-m-d', $stamp)==date('Y-m-d')) $style='today';

        else if(date('w', $stamp)==0 || date('w', $stamp)==6) $style='weekend';

        else $style='weekday';

        $str.= " ".'<td class="'.$style.'">';

        $str.= ($calendar[date('j', $stamp)] > 0)?'<a href="?mod=article&year='.$year.'&month='.$month.'&day='.$day.'">'.(int)$day.'</a>':(int)$day;

        $str.= '</td>'." ";

        if(date('w', $stamp)==6) $str.=" ".'</tr>'." ";

    }

 

    $str .= '</table>';

    return $str;

}

//php利用纯真ip数据库查地址的函数

function convertip($ip) {

        if(!preg_match("/^d{1,3}.d{1,3}.d{1,3}.d{1,3}$/", $ip)) {

                return '';

        }

 

        if($fd = @fopen( "e:hostswkhddbipdatawry.dat", 'rb')) {//fopen()中是纯真ip数据库文件位置,请自行设定!

 

                $ip = explode('.', $ip);

                $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];

 

                $DataBegin = fread($fd, 4);

                $DataEnd = fread($fd, 4);

                $ipbegin = implode('', unpack('L', $DataBegin));

                if($ipbegin < 0) $ipbegin += pow(2, 32);

                $ipend = implode('', unpack('L', $DataEnd));

                if($ipend < 0) $ipend += pow(2, 32);

                $ipAllNum = ($ipend - $ipbegin) / 7 + 1;

 

                $BeginNum = 0;

                $EndNum = $ipAllNum;

 

                while($ip1num > $ipNum || $ip2num < $ipNum) {

                        $Middle= intval(($EndNum + $BeginNum) / 2);

 

                        fseek($fd, $ipbegin + 7 * $Middle);

                        $ipData1 = fread($fd, 4);

                        if(strlen($ipData1) < 4) {

                                fclose($fd);

                                return '系统错误';

                        }

                        $ip1num = implode('', unpack('L', $ipData1));

                        if($ip1num < 0) $ip1num += pow(2, 32);

 

                        if($ip1num > $ipNum) {

                                $EndNum = $Middle;

                                continue;

                        }

 

                        $DataSeek = fread($fd, 3);

                        if(strlen($DataSeek) < 3) {

                                fclose($fd);

                                return '系统错误';

                        }

                        $DataSeek = implode('', unpack('L', $DataSeek.chr(0)));

                        fseek($fd, $DataSeek);

                        $ipData2 = fread($fd, 4);

                        if(strlen($ipData2) < 4) {

                                fclose($fd);

                                return 'System Error';

                        }

                        $ip2num = implode('', unpack('L', $ipData2));

                        if($ip2num < 0) $ip2num += pow(2, 32);

 

                        if($ip2num < $ipNum) {

                                if($Middle == $BeginNum) {

                                        fclose($fd);

                                        return 'Unknown';

                                }

                                $BeginNum = $Middle;

                        }

                }

 

                $ipFlag = fread($fd, 1);

                if($ipFlag == chr(1)) {

                        $ipSeek = fread($fd, 3);

                        if(strlen($ipSeek) < 3) {

                                fclose($fd);

                                return '系统错误';

                        }

                        $ipSeek = implode('', unpack('L', $ipSeek.chr(0)));

                        fseek($fd, $ipSeek);

                        $ipFlag = fread($fd, 1);

                }

 

                if($ipFlag == chr(2)) {

                        $AddrSeek = fread($fd, 3);

                        if(strlen($AddrSeek) < 3) {

                                fclose($fd);

                                return 'System Error';

                        }

                        $ipFlag = fread($fd, 1);

                        if($ipFlag == chr(2)) {

                                $AddrSeek2 = fread($fd, 3);

                                if(strlen($AddrSeek2) < 3) {

                                        fclose($fd);

                                        return 'System Error';

                                }

                                $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));

                                fseek($fd, $AddrSeek2);

                        } else {

                                fseek($fd, -1, SEEK_CUR);

                        }

 

                        while(($char = fread($fd, 1)) != chr(0))

                        $ipAddr2 .= $char;

 

                        $AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));

                        fseek($fd, $AddrSeek);

 

                        while(($char = fread($fd, 1)) != chr(0))

                        $ipAddr1 .= $char;

                } else {

                        fseek($fd, -1, SEEK_CUR);

                        while(($char = fread($fd, 1)) != chr(0))

                        $ipAddr1 .= $char;

 

                        $ipFlag = fread($fd, 1);

                        if($ipFlag == chr(2)) {

                                $AddrSeek2 = fread($fd, 3);

                                if(strlen($AddrSeek2) < 3) {

                                        fclose($fd);

                                        return 'System Error';

                                }

                                $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));

                                fseek($fd, $AddrSeek2);

                        } else {

                                fseek($fd, -1, SEEK_CUR);

                        }

                        while(($char = fread($fd, 1)) != chr(0))

                        $ipAddr2 .= $char;

                }

                fclose($fd);

 

                if(preg_match('/http/i', $ipAddr2)) {

                        $ipAddr2 = '';

                }

                $ipaddr = "$ipAddr1";  //  完整地址为 "$ipAddr1 $ipAddr2"

                $ipaddr = preg_replace('/CZ88.NET/is', '', $ipaddr);

                $ipaddr = preg_replace('/^s*/is', '', $ipaddr);

                $ipaddr = preg_replace('/s*$/is', '', $ipaddr);

                if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {

                        $ipaddr = 'Unknown';

                }

 

                return $ipaddr;

 

        } else {

 

                $datadir = PHPCMS_ROOT.'./ipdata/';

                $ip_detail = explode('.', $ip);

                if(file_exists($datadir.$ip_detail[0].'.txt')) {

                        $ip_fdata = @fopen($datadir.$ip_detail[0].'.txt', 'r');

                } else {

                        if(!($ip_fdata = @fopen($datadir.'0.txt', 'r'))) {

                                return 'Invalid IP data file';

                        }

                }

                for ($i = 0; $i <= 3; $i++) {

                        $ip_detail[$i] = sprintf('%03d', $ip_detail[$i]);

                }

                $ip = join('.', $ip_detail);

                do {

                        $ip_data = fgets($ip_fdata, 200);

                        $ip_data_detail = explode('|', $ip_data);

                        if($ip >= $ip_data_detail[0] && $ip <= $ip_data_detail[1]) {

                                fclose($ip_fdata);

                                return $ip_data_detail[2].$ip_data_detail[3];

                        }

                } while(!feof($ip_fdata));

                fclose($ip_fdata);

                return '未知地址';

 

        }

 

}

// station_id 函数

function sta_id(){

 

    include_once('./include/tq/config.inc.php');

    include_once('./include/tq/error.inc.php');

    include_once('./include/tq/mysql.inc.php');

    include_once('./include/tq/template.inc.php');

 

unset($onlineip);

if($_SERVER['HTTP_CLIENT_IP']){

     $onlineip=$_SERVER['HTTP_CLIENT_IP'];

}elseif($_SERVER['HTTP_X_FORWARDED_FOR']){

     $onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];

}else{

     $onlineip=$_SERVER['REMOTE_ADDR'];

}

 

$ips = $onlineip;

 

 

$addr = convertip($ips);

 

$address = $addr;

 

$address = str_replace(array('省','市','县','工业','北京','区','大学','武汉','西安','安交','海交','新疆','大连','广西'),array(' ',' ',' ',' 工业','北京 ',' ',' ','武汉 ','西安 ','安 交','海 交','新疆 ','大连 ','广西 '),$address);

$addresss = explode(" ",$address);

 

$address1 = $addresss[0];

$address2 = $addresss[1];

$address3 = $addresss[2];

$address4 = $addresss[3];

 

$query = dbQuery("select count(*) as num from ".weather_station." where province like '$address1' ");//查询 省字段 数目

$row = dbArray($query);

 

$number = $row["num"];

 

 

if($number>0 && $address2<>'' && $address1<>上海 && $address1<>重庆){

             unset($addresss[0]);

             }

if($address4==''){

                  unset($addresss[3]);

                 }

if($address3==''){

                  unset($addresss[2]);

                 }

 

 

$query = dbQuery("select count(*) as num from ".weather_station." where station like '$address4' ");//查询 县 字段

$row = dbArray($query);

$number = $row["num"];

if($number==0){

               unset($addresss[3]);

              }

 

$query = dbQuery("select count(*) as num from ".weather_station." where station like '$address3' ");//查询 县 字段

$row = dbArray($query);

$number = $row["num"];

if($number==0){

               unset($addresss[2]);

              }

//数组数据2 查询开始

$queryx = dbQuery("select count(*) as nums from ".weather_station." where station like '$address2' ");//查询 县 字段

$row = dbArray($queryx);

$nums = $row["nums"];

 

$queryy = dbQuery("select count(*) as numd from ".weather_station." where district like '$address2' ");//查询 市 字段

$row = dbArray($queryy);

$numd = $row["numy"];

 

if($nums==0 && $numd==0){

               unset($addresss[1]); // 如果 数组数据2 不在数据库里则删除数据2

              }

//数组数据2 查询结束

 

$query = dbQuery("select count(*) as num from ".weather_station." where district like '$address2' ");//查询 市 字段

$row = dbArray($query);

$number = $row["num"];

if($number>1 && $address3<>'' && $nums<>0 && $address2<>广州 ){

               unset($addresss[1]); // 如果数组数据2在数据库里有 多个 则删除数据2

              }

 

@extract(dbQuery("select count(*) as num_0 from ".weather_station." where district like '$address1' "));//查询 市 字段

@extract(dbQuery("select count(*) as num_1 from ".weather_station." where station like '$address2' "));//查询 县 字段

$number = $num_0;

$numbery = $num_1;

if($number>1 && $numbery>0 && $address2<>''){

               unset($addresss[0]); //如果数组数据1在数据库里有 多个 则删除数据1

              }

 

$addresss = implode("",$addresss);                           

 

 

 

//字符串处理完毕 下面开始查询 station_id

 

$query1 = dbQuery("select count(*) as nums_addresss from ".weather_station." where station like '$addresss' ");

$row1 = dbArray($query1);

$nums_addresss = $row1["nums_addresss"];

$query2 = dbQuery("select count(*) as numd_addresss from ".weather_station." where district like '$addresss' ");

$row2 = dbArray($query2);

$numd_addresss = $row2["numd_addresss"];

if($nums_addresss>0){

  $result = dbQuery("SELECT station_id FROM ".weather_station." WHERE station like '$addresss' ORDER BY id");

  $r = dbArray($result);

 

  $station_id[] = $r[station_id];

  $station_id = $station_id[0];

  return $station_id; // 查询结果

 

                    }

 

if($nums_addresss==0 && $numd_addresss>0){

  $result = dbQuery("SELECT station_id FROM ".weather_station." WHERE district like '$addresss' ORDER BY id");

  $r = dbArray($result);

 

  $station_id[] = $r[station_id];

  $station_id = $station_id[0];

  return $station_id; // 查询结果

  //echo $station_id;

                    }

}

function get_real_ip()

{

        $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']);

}

 

function addr(){

 

    include_once('./include/tq/config.inc.php');

    include_once('./include/tq/error.inc.php');

    include_once('./include/tq/mysql.inc.php');

    include_once('./include/tq/template.inc.php');

 

unset($onlineip);

if($_SERVER['HTTP_CLIENT_IP']){

     $onlineip=$_SERVER['HTTP_CLIENT_IP'];

}elseif($_SERVER['HTTP_X_FORWARDED_FOR']){

     $onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];

}else{

     $onlineip=$_SERVER['REMOTE_ADDR'];

}

 

$ips = $onlineip;

 

 

$addr = convertip($ips);

 

$address = $addr;

 

$address = str_replace(array('省','市','县','工业','北京','区','大学','武汉','西安','安交','海交','新疆','大连','广西'),array(' ',' ',' ',' 工业','北京 ',' ',' ','武汉 ','西安 ','安 交','海 交','新疆 ','大连 ','广西 '),$address);

$addresss = explode(" ",$address);

 

$address1 = $addresss[0];

$address2 = $addresss[1];

$address3 = $addresss[2];

$address4 = $addresss[3];

 

$query = dbQuery("select count(*) as num from ".weather_station." where province like '$address1' ");//查询 省字段 数目

$row = dbArray($query);

 

$number = $row["num"];

 

 

if($number>0 && $address2<>'' && $address1<>上海 && $address1<>重庆){

             unset($addresss[0]);

             }

if($address4==''){

                  unset($addresss[3]);

                 }

if($address3==''){

                  unset($addresss[2]);

                 }

 

 

$query = dbQuery("select count(*) as num from ".weather_station." where station like '$address4' ");//查询 县 字段

$row = dbArray($query);

$number = $row["num"];

if($number==0){

               unset($addresss[3]);

              }

 

$query = dbQuery("select count(*) as num from ".weather_station." where station like '$address3' ");//查询 县 字段

$row = dbArray($query);

$number = $row["num"];

if($number==0){

               unset($addresss[2]);

              }

//数组数据2 查询开始

$queryx = dbQuery("select count(*) as nums from ".weather_station." where station like '$address2' ");//查询 县 字段

$row = dbArray($queryx);

$nums = $row["nums"];

 

$queryy = dbQuery("select count(*) as numd from ".weather_station." where district like '$address2' ");//查询 市 字段

$row = dbArray($queryy);

$numd = $row["numy"];

 

if($nums==0 && $numd==0){

               unset($addresss[1]); // 如果 数组数据2 不在数据库里则删除数据2

              }

//数组数据2 查询结束

 

$query = dbQuery("select count(*) as num from ".weather_station." where district like '$address2' ");//查询 市 字段

$row = dbArray($query);

$number = $row["num"];

if($number>1 && $address3<>'' && $nums<>0 && $address2<>广州 ){

               unset($addresss[1]); // 如果数组数据2在数据库里有 多个 则删除数据2

              }

 

@extract(dbQuery("select count(*) as num_0 from ".weather_station." where district like '$address1' "));//查询 市 字段

@extract(dbQuery("select count(*) as num_1 from ".weather_station." where station like '$address2' "));//查询 县 字段

$number = $num_0;

$numbery = $num_1;

if($number>1 && $numbery>0 && $address2<>''){

               unset($addresss[0]); //如果数组数据1在数据库里有 多个 则删除数据1

              }

 

$addresss = implode("",$addresss);                           

return $addresss; // 结果

 

 

}

 

?>
复制代码config.inc.php

<?php

// this file is mysql config

 

$dbhost = 'localhost';

$dbname = '********';

$dbuser = '********';

$dbpass = '******';

 

$prefix = '';

 

?>

php实用实例 采集远程网站图片保存到本地
先从文章中把所有<img ...> 用正则 抠出来. $message   //文章内容

    //正则(这个还不是)

    $reg = "/<img[^>]*src="(http://(.+)/(.+).(jpg|gif|bmp|bnp))"/isU";

    //把抠出来的 img 地址存放到 $img_array 变量中

    preg_match_all($reg, $message, $img_array, PREG_PATTERN_ORDER);

    //过滤重复的图片

    $img_array = array_unique($img_array[1]);


复制代码第二步. 把$img_array 数组循环一下. 做图片保存和文章位置替换 foreach ($img_array as $img){

        //判断是否是自己网站上的 图片

        if('xxx.com' != get_domain($img)){// 如果这个图片不是自己服务器上的

            //读取图片文件

            $Gimg = new GetImage();

            $Gimg->source = $img;

            $Gimg->save_to = './data/temp/';

            $FILE =  $Gimg->download(); //图片移动到本地

            //保存到相册 得到图片保存的位置

            $img_path = pic_save($FILE,0,'');

            //文本路径替换

            $message = str_replace($img, $img_path, $message);

           

        }

    }

 

    ....这时候 $message 里面已经图片已经替换为自己服务器本地的地址,并且图片也保存到自己的服务器上.


复制代码//下面一个函数 和 类是从网络上找的.

 

//从url中获得域名

function get_domain($url){

    $pattern = "/[w-]+.(com|net|org|gov|cc|biz|info|cn)(.(cn|hk))*/";

    preg_match($pattern, $url, $matches);

    if(count($matches) > 0) {

        return $matches[0];

    }else{

        $rs = parse_url($url);

        $main_url = $rs["host"];

        if(!strcmp(long2ip(sprintf("%u",ip2long($main_url))),$main_url)) {

            return $main_url;

        }else{

            $arr = explode(".",$main_url);

            $count=count($arr);

            $endArr = array("com","net","org","3322");//com.cn  net.cn 等情况

            if (in_array($arr[$count-2],$endArr)){

                $domain = $arr[$count-3].".".$arr[$count-2].".".$arr[$count-1];

            }else{

                $domain =  $arr[$count-2].".".$arr[$count-1];

            }

            return $domain;

        }// end if(!strcmp...)

    }// end if(count...)

}// end function

 

// 从远程吧图片载到服务器本地 的 类

class GetImage {

 

var $source;

var $save_to;

var $quality;

 

function download($method = 'curl') {

    $info = @GetImageSize($this->source);

    $mime = $info['mime'];

   

// What sort of image?

    $type = substr(strrchr($mime, '/'), 1);

    switch ($type){

        case 'jpeg':

            $image_create_func = 'ImageCreateFromJPEG';

            $image_save_func = 'ImageJPEG';

            $new_image_ext = 'jpg';

       

            // Best Quality: 100

            $quality = isSet($this->quality) ? $this->quality : 100;

            break;

       

        case 'png':

            $image_create_func = 'ImageCreateFromPNG';

            $image_save_func = 'ImagePNG';

            $new_image_ext = 'png';

       

            // Compression Level: from 0  (no compression) to 9

            $quality = isSet($this->quality) ? $this->quality : 0;

            break;

       

        case 'bmp':

            $image_create_func = 'ImageCreateFromBMP';

            $image_save_func = 'ImageBMP';

            $new_image_ext = 'bmp';

            break;

       

        case 'gif':

            $image_create_func = 'ImageCreateFromGIF';

            $image_save_func = 'ImageGIF';

            $new_image_ext = 'gif';

 

            break;

       

        case 'vnd.wap.wbmp':

            $image_create_func = 'ImageCreateFromWBMP';

            $image_save_func = 'ImageWBMP';

            $new_image_ext = 'bmp';

            break;

       

        case 'xbm':

            $image_create_func = 'ImageCreateFromXBM';

            $image_save_func = 'ImageXBM';

            $new_image_ext = 'xbm';

            break;

       

        default:

            $image_create_func = 'ImageCreateFromJPEG';

            $image_save_func = 'ImageJPEG';

            $new_image_ext = 'jpg';

    }

   

    if(isSet($this->set_extension)){

        $ext = strrchr($this->source, ".");

        $strlen = strlen($ext);

        $new_name = basename(substr($this->source, 0, -$strlen)).'.'.$new_image_ext;

    }else{

        $new_name = basename($this->source);

    }

   

    $save_to = $this->save_to."/blog_insert_temp_".time().mt_rand(1,99).".".$new_image_ext;

    //输出对象 组成跟$_FILE变量一样 得到后自己和平常图片上传处理一样了

    $img_info['name'] = basename($this->source);

    $img_info['type'] = $mime;

    $img_info['size'] = 1000;

    $img_info['tmp_name'] = $save_to;

    $img_info['error'] = 0;

       

    if($method == 'curl'){

        $save_image = $this->LoadImageCURL($save_to);

    }elseif($method == 'gd'){

        $img = $image_create_func($this->source);

   

            if(isSet($quality)){

               $save_image = $image_save_func($img, $save_to, $quality);

            }else{

               $save_image = $image_save_func($img, $save_to);

            }

          

    }

         return $img_info;

    }

   

    function LoadImageCURL($save_to){

        $ch = curl_init($this->source);

        $fp = fopen($save_to, "wb");

       

        // set URL and other appropriate options

        $options = array(CURLOPT_FILE => $fp,

                         CURLOPT_HEADER => 0,

                         CURLOPT_FOLLOWLOCATION => 1,

                         CURLOPT_TIMEOUT => 60); // 1 minute timeout (should be enough)

       

        curl_setopt_array($ch, $options);

       

        curl_exec($ch);

        curl_close($ch);

        fclose($fp);

 

    }

}

php采集入门教程,教你如何写采集

我们第一步是采集所有的连接,我们这个可不是简单的采集一篇文章哦,我们要做的是采集整本书,并且保存到一个文本,因为现在MP3普及了,都可以看电子书了。
一本书要怎么保存呢,当然是要用书名保存便于查找拉,我们先来采集这本书的标题,
先来看一下原形:
<meta name="description" content="诛仙(二),后金庸武侠圣经:诛仙2">
规律是:
<meta name="description" content="标题">
我们来写一下正则表达式吧,不要告诉我不会,不会就来湖南拉,嘿嘿很多大鸟的。
正则表达式:
<meta name="description" content="(.*?)">
下面开始开工拉!我们首先要获得资源,这里需要用到一个函数:
file_get_contents()
介绍:
主要功能:将整个文件读入一个字符串
  原形是:string file_get_contents
( string filename [, bool use_include_path [, resource context [, int offset [, int maxlen]]]] )


具体什么意思呢,其实就是告诉你在某个资源内搜索符合规定的字符串并赋予给一个变量
  上边是开始需要用到的,我们了解一点就开始写一点那样更能够深刻的理解并且能记住,我来分析下写程序的思路:
我们采集一个地址,不会是就采集一本书把所以我们的采集地址是变化的,变化的用什么呢?这个时候一个硕大的粉笔扔了过来,我不是告诉你了吗?变量,一个严厉的王建军老师,用尽了全身力气,汇集在粉笔上对我无情的扔了过来,我想哭。。。。。。。老师打人了!!!!!!!!打家来看啊。
用变量好的,那就用变量,我们获取地址,代码如下:
$url = "http://book.sina.com.cn/nzt/lit/zhuxian2/index.shtml";// 图书地址
有了上边讲的,现在应该可以完全写出来了,开始代码:
<?php


//****************************************************************


$url = "http://book.sina.com.cn/nzt/lit/zhuxian2/index.shtml";// 图书地址


$ver = "old"; //新旧版本


//因为图书他的页面又两种板式,所以我们要在这里区别一下

//****************************************************************


// 获取页面代码 file_get_contents() 把文件读入一个字符串,下边的时候需要用到


$r = file_get_contents($url);


//在上边获取的字符串中搜索标题,并赋值给变量$booktitle,$booktitle是数组,/is就凑活理解成开始吧!


preg_match("/<meta name="description" content="(.*?)">/is",$r,$booktitle);


//把第一个出现捕获的标题赋值给变量bookname。


$bookname = $booktitle[1]; //书名


//print_r ($booktitle);die();不理解的输出这个看看,嘿嘿,帮助大家理解


/*************************************************************************************


*原形:<li><a href=/nzt/lit/zhuxian2/1.shtml target=_blank class=a03>第四十五章  伤痛(1)</a>


*规律是:<li><a href=不固定.shtml target=_blank class=a03>不固定</a>


*ISU是正则的一种模式,该模式是非贪婪模式,也就是说只要匹配上就结束


*************************************************************************************/


$preg = '/<li><a href=(.*).shtml target=_blank class=a03>/isU';


/********************************************************************************


*preg_match_all进行全局正则表达式匹配


*原形:


*
int preg_match_all


*


( string pattern, string subject, array matches [, int flags] )


*意思是:在全局搜索资源变量$preg,得到一个数组赋值给一个变量$zj,这个变量也就是数组了。


*取得其中的资源的时候用标示就可以,不会的看下数组哦!


*汪老师说了,不会数组的给我出去啃书,什么时候会了进来


**********************************************************************************/


preg_match_all($preg, $r, $zj);


//print_r ($zj);die();不理解的输出这个看看,嘿嘿,帮助大家理解


// 计算标题数量,我是问了最后提示大家看又多少章节,采集了多少


$bookzj = count($zj[1]);


//判断你要采集的板式是那种哦,因为内容开始不一样哦,其实可以自动判断的,我也写成了,但是不发布,因为很简单


if ($ver=="new"){

 

$content_start = "<!--正文内容开始-->";

 

$content_end = "<!--正文内容结束-->";

 

}


if ($ver=="old"){

 

$content_start = "</table><!--NEWSZW_HZH_END-->";

 

$content_end = "<br>";

 

}


//采集后的文件,然后那来进行处理.这个是设置编码的,为什么是这个呢,因为你看下网站源码,嘿嘿!!!

header("Content-Type:text/html;charset=gb2312");

/*****************************************************************************************

*从1到136页的内容一次合并.这个是最爽的...打个版权,以免有人侵权,嘿嘿,好像我就在侵权哦!!!

*某某一定想杀人,这句意思就是写个版权,创建文件。

*****************************************************************************************/

writer($bookname." 共".$bookzj."节rn帅哥刘并于".date("D M j G:i:s T Y")."为了毕业而设计小说整理收集rn", "./ljy/".$bookname.".txt","w+");

/*****************************************************************************************

*从1到136页的内容一次合并.这个是最爽的...打个版权,以免有人侵权,嘿嘿,好像我就在侵权哦!!!

*某某一定想杀人,这句意思就是写个版权,创建文件。

*****************************************************************************************/

for ($i=0;$i<$bookzj;$i++) {//提示下:$bookzj里边是什么前边叫你输出了,不明自自己在看下


//echo "http://book.sina.com.cn".$zj[1][$i]".shtml";die();


$str = file_get_contents("http://book.sina.com.cn".$zj[1][$i].".shtml");


preg_match("/(<title>)(.*?)(</title>)/is",$str,$title);


$title = str_replace("_读书频道_新浪网","",preg_replace("/<(.*?)>/s","",$title[2]));


/***************************************************************************


*preg_replace执行正则表达式的搜索和替换


*str_replace用法真的不好说,就看例子吧!其实就是一个替换


* str   =   "abcabc".replace(/a/g,   "d");         //结果为   dbcdbc  


* str   =   "abcabc".replace(/a/,   "d");         //结果为   dbcabc  


***************************************************************************/


preg_match("/(".$content_start.")(.*?)(".$content_end.")/is",$str,$content);


$content = preg_replace("/<(.*?)>/s","",str_replace("</p>","rn",$content[2]));


$content = str_replace("
","",preg_replace("/^[s]*n/is","",$content));


$content = str_replace("  ? ","  ",preg_replace("/^[s]*n/is","",$content));

 

$result = " rn第".($i+1)."节--------".$title."_汪老师就是帅 --------- rn".$content;


//var_dump ($result);die();


writer($result, "./ailaopo/".$bookname.".txt","a+");


echo "小说".$bookname."共".$bookzj."节,现在整理到第".$i."节 _".$title."<br>";

}
echo "小说".$bookname."共".$bookzj."节 已全部整理完成!";


function writer($content,$url,$mode)
{
    $fp = fopen($url, $mode);
    fwrite($fp, $content);
    fclose($fp);        
}
?> 

 

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • php KindEditor文章内分页的实例方法

    我们这里介绍php与KindEditor编辑器使用时如何利用KindEditor编辑器的分页功能实现文章内容分页,KindEditor编辑器在我们点击分页时会插入代码,我们只要以它为分切符,就...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • 自己动手写的jquery分页控件(非常简单实用)

    最近接了一个项目,其中有需求要用到jquery分页控件,上网也找到了需要分页控件,各种写法各种用法,都是很复杂,最终决定自己动手写一个jquery分页控件,全当是练练手了。写的不好,还请见谅,本分页控件在chrome测试过,其他的兼容性...2015-10-30
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • jquery实现的伪分页效果代码

    本文实例讲述了jquery实现的伪分页效果代码。分享给大家供大家参考,具体如下:这里介绍的jquery伪分页效果,在火狐下表现完美,IE全系列下有些问题,引入了jQuery1.7.2插件,代码里有丰富的注释,相信对学习jQuery有不小的帮助,期...2015-10-30
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07
  • php中的foreach函数的2种用法

    Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
  • C语言中free函数的使用详解

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
  • vue.js 表格分页ajax 异步加载数据

    Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.这篇文章主要介绍了vue.js 表格分页ajax 异步加载数据的相关资料,需要的朋友可以参考下...2016-10-20
  • PHP函数strip_tags的一个bug浅析

    PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数...2014-05-31
  • SQL Server中row_number函数的常见用法示例详解

    这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • PHP加密解密函数详解

    分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。 加密代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数 srand(...2015-10-30