预览模式: 普通 | 列表

php插入mysql数据避免重复插入

php实现动转静生成纯静态页面的方法

 在php中实现动转静生成纯静态页面的方法不管用什么方法,原理都是一样的。就是用程序读取相应的数据来替换模版中的变量,然后生成静态页。php中主要用到的就是要用到fread()和fwirte()。而静态页面生成了之后,就会牵扯到修改的问题。这里可以用到正则匹配的方法来替换模版中改变的部 位。推荐的方法是直接把原来生成的模版砍掉,重新生成,呵呵,真正的一了百了。

还需要说明的一点就是,这种生成静态页面的方法一般都用于那些变化不是很频繁的页面,比如信息的最终页面。而针对列表页,如果信息更新不是很频繁的 话,也是可取的。现在网上流行好多可以生成静态页面的blog或者论坛程序,都是通过手动点击后台“生成html页”的按钮来“半自动”生成html的。 而对一些信息量非常大的门户网站,则行不通。因为静态页之所以叫“静态”,是因为其不可自动改变。如果信息列表每天更新100次,那么静态的列表页就要重 新生成100次。如果我有10个这样的栏目,那想想也够吐血的了。

好了,闲话少说,现在来看看实际的程序演示:

first:是一个利用ob函数来做的咚咚,代码比较简单,效率相对也高一些。

PHP代码
  1. <?php  
  2. ob_start();  
  3. @readfile("http://www.phphi.cn/post/186");  
  4. $text = ob_get_flush();  
  5. $myfile = fopen("myfile.html","w");  
  6. $text = str_replace ("{counent}",$string,$text);  
  7. fwrite($myfile,$text);  
  8. ob_clean();  
  9. ?>  

查看更多...

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1751

PHP使用Snoopy类下载图片

 

PHP代码
  1. <?php  
  2.   
  3. set_time_limit(0);     //设置超时时间  
  4.   
  5. include_once'Snoopy.class.php' );  //调用Snoopy类  
  6.   
  7.    
  8.   
  9. function getImage($id,$url) {  
  10.   
  11. $filename = $id . ".jpg";  
  12.   
  13. $temp = new Snoopy;  
  14.   
  15. $temp -> fetch($url);  
  16.   
  17. if($temp->results != "") {  
  18.   
  19. $handle = fopen("images/" . $filename"w");  
  20.   
  21. fwrite($handle$temp->results);//写入抓得内容  
  22.   
  23. fclose($handle);  
  24.   
  25. }  
  26.   
  27. return $filename;  
  28.   
  29. }  
  30.   
  31. ?>  

 

Tags: php snoopy类

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4405

使用PHP的Snoopy类抓取图片

 用了两天php的Snoopy这个类,发现很好用。获取请求网页里面的所有链接,直接使用fetchlinks就可以,获取所有文本信息使用fetchtext(其内部还是使用正则表达式在进行处理),还有其它较多的功能,如模拟提交表单等。

使用方法:

  1. 先下载Snoopy类,下载地址:http://sourceforge.net/projects/snoopy/
  2. 先实例化一个对象,然后调用相应的方法即可获取抓取的网页信息
PHP代码
  1. include 'snoopy/Snoopy.class.php';  
  2.       
  3. $snoopy = new Snoopy();  
  4.       
  5. $sourceURL = "http://xxxxxxxxx";  
  6. $snoopy->fetchlinks($sourceURL);  
  7.       
  8. $a = $snoopy->results;  

 它并没有提供获取网页中所有图片地址的方法,自己有个需求是要获取一个页面中所有文章列表中图片地址。然后自己就写了一个,主要还是正则那里匹配重要。

PHP代码
  1. //匹配图片的正则表达式  
  2.  $reTag = "/<img[^s]+src="(http://[^"]+).(jpg|png|gif|jpeg)"[^/]*/>/i";  

 

查看更多...

Tags: php snoopy类

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 5052

利用Snoopy类自动下载图片

 函数功能说明:

fetch($url) $url为图片地址

功能:返回获得图片的句柄

备注:它是snoopy类的一个函数。

查看更多...

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1864

PHP CURL_MULTI 多线程采集网页函数

PHP CURL_MULTI 多线程采集网页函数

PHP代码
  1. <?php    
  2.   
  3. $text = remote(array('http://www.imfeng.com/','http://www.aligaduo.com/'));    
  4.   
  5. print_r($text);    
  6.   
  7.      
  8.   
  9. function remote($urls) {    
  10.   
  11.     if (!is_array($urlsor count($urls) == 0) {    
  12.   
  13.         return false;    
  14.   
  15.     }    
  16.   
  17.      
  18.   
  19.     $curl = $text = array();    
  20.   
  21.     $handle = curl_multi_init();    
  22.   
  23.     foreach($urls as $k => $v) {    
  24.   
  25.         $nurl[$k]= preg_replace('~([^:\/\.]+)~ei'"rawurlencode('\\1')"$v);    
  26.   
  27.         $curl[$k] = curl_init($nurl[$k]);    
  28.   
  29.         curl_setopt($curl[$k], CURLOPT_RETURNTRANSFER, 1);    
  30.   
  31.         curl_setopt($curl[$k], CURLOPT_HEADER, 0);    
  32.   
  33.         curl_multi_add_handle ($handle$curl[$k]);    
  34.   
  35.     }    
  36.   
  37.      
  38.   
  39.     $active = null;    
  40.   
  41.     do {    
  42.   
  43.         $mrc = curl_multi_exec($handle$active);    
  44.   
  45.     } while ($mrc == CURLM_CALL_MULTI_PERFORM);    
  46.   
  47.      
  48.   
  49.     while ($active && $mrc == CURLM_OK) {    
  50.   
  51.         if (curl_multi_select($handle) != -1) {    
  52.   
  53.             do {    
  54.   
  55.                 $mrc = curl_multi_exec($handle$active);    
  56.   
  57.             } while ($mrc == CURLM_CALL_MULTI_PERFORM);    
  58.   
  59.         }    
  60.   
  61.     }    
  62.   
  63.      
  64.   
  65.     foreach ($curl as $k => $v) {    
  66.   
  67.         if (curl_error($curl[$k]) == "") {    
  68.   
  69.         $text[$k] = (string) curl_multi_getcontent($curl[$k]);    
  70.   
  71.         }    
  72.   
  73.         curl_multi_remove_handle($handle$curl[$k]);    
  74.   
  75.         curl_close($curl[$k]);    
  76.   
  77.     }    
  78.   
  79.     curl_multi_close($handle);    
  80.   
  81.     return $text;    
  82.   
  83. }   

Tags: php curl

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2735

 广告位

↑返回顶部↑