php小偷程序新概念之资源本地化(一)

最近做了一个seo项目是针对一些优秀的网站,把它们的资源变成我们自己。

 要求是:要能实时更新,静态页面本地化,本地化的页面不能出现原有的主题。

实时更新和替换主题利用一般的小偷程序就可以实现,但是本地化就得把页面下载下来,这样一来样式,图片路径,实时更新等一系列的问题就要注意了。

css,js,图片等资源都要下载到本地,这些文件下载一两个没问题,一旦批量下载就要仔细观察它们的路径规则,而且一般css里面会含有背景图片,这也需要使用本地图片。所以首先要解决资源本地化,我写了一个小偷本地化的类,其中有几个方法可以实现资源本地化,暂时先展示资源本地化的方法,待介绍完了将开源所有的代码以及使用方法:

        /**
	 * 生成文件夹,但是不生成文件
	 *
	 * @param $address
	 */
	public function get_file_adress($address){
		//$first = substr($address, 0, 1);
		$dirs = explode('/',$address);
		$this->array_remove_empty($dirs);
		//$address = implode($dirs, '/');
		//if($first == '/') $address = '/'.$address;
		$dirs = array_values($dirs);
		$nums = count($dirs);
		if($nums > 1)
		{
			$s=0;
			while ($s<$nums-1){
				$dirs[$s] = self::filename_safe($dirs[$s]);
				if(!file_exists($dirs[$s])){
					if(self::filename_check($dirs[$s])){
						if(!file_exists($dirs[$s])) @$mkdir = mkdir($dirs[$s],0777);
					}
				}
				++$s;
				$dirs[$s]=$dirs[$s-1]."/".$dirs[$s];
			}
		}
	}
    /**
     * 生成文件
     *
     * @param $filename
     * @param $url
     */
    private function grab_file($filename, $url) {
        if($url == "") return false;
        if($filename == "") return false;//echo $filename.'||'.$url.'<hr>';
        $filename = ltrim($filename, '/');
        if(!file_exists($filename))
        {
            $this->get_content($filename, $url);
        }
        /*$session_name = "grab_caches_file";
         if($_SESSION[$session_name])
         {
            $grab_caches_time = $_SESSION[$session_name];//echo time().'||'.$grab_caches_time.'<hr>';
            if((time() - $grab_caches_time) >= $this->cache_time)
            {
            $_SESSION[$session_name] = null;
            unset($_SESSION[$session_name]);
            $this->get_content($filename, $url);
            }
            }
            else
            {
            $_SESSION[$session_name] = time();
            $this->get_content($filename, $url);
            }*/

    }
    public function get_content($filename, $url)
    {//echo $filename.'||'.$url.'<hr>';
        $content = curl_get_content($url);
        if($content){
            @file_put_contents($filename, $content);
            return true;
        }else{
            return false;
        }
    }

先利用get_file_adress函数生成文件存放的文件夹,再用grab_file生成文件。

实例演示:http://news.80jiaju.com/


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值