php插入mysql数据避免重复插入
作者:admin 日期:2012-04-24
php实现动转静生成纯静态页面的方法
作者:admin 日期:2012-04-24
在php中实现动转静生成纯静态页面的方法不管用什么方法,原理都是一样的。就是用程序读取相应的数据来替换模版中的变量,然后生成静态页。php中主要用到的就是要用到fread()和fwirte()。而静态页面生成了之后,就会牵扯到修改的问题。这里可以用到正则匹配的方法来替换模版中改变的部 位。推荐的方法是直接把原来生成的模版砍掉,重新生成,呵呵,真正的一了百了。
还需要说明的一点就是,这种生成静态页面的方法一般都用于那些变化不是很频繁的页面,比如信息的最终页面。而针对列表页,如果信息更新不是很频繁的 话,也是可取的。现在网上流行好多可以生成静态页面的blog或者论坛程序,都是通过手动点击后台“生成html页”的按钮来“半自动”生成html的。 而对一些信息量非常大的门户网站,则行不通。因为静态页之所以叫“静态”,是因为其不可自动改变。如果信息列表每天更新100次,那么静态的列表页就要重 新生成100次。如果我有10个这样的栏目,那想想也够吐血的了。
好了,闲话少说,现在来看看实际的程序演示:
first:是一个利用ob函数来做的咚咚,代码比较简单,效率相对也高一些。
- <?php
- ob_start();
- @readfile("http://www.phphi.cn/post/186");
- $text = ob_get_flush();
- $myfile = fopen("myfile.html","w");
- $text = str_replace ("{counent}",$string,$text);
- fwrite($myfile,$text);
- ob_clean();
- ?>
PHP使用Snoopy类下载图片
作者:admin 日期:2012-04-24
- <?php
- set_time_limit(0); //设置超时时间
- include_once( 'Snoopy.class.php' ); //调用Snoopy类
- function getImage($id,$url) {
- $filename = $id . ".jpg";
- $temp = new Snoopy;
- $temp -> fetch($url);
- if($temp->results != "") {
- $handle = fopen("images/" . $filename, "w");
- fwrite($handle, $temp->results);//写入抓得内容
- fclose($handle);
- }
- return $filename;
- }
- ?>
使用PHP的Snoopy类抓取图片
作者:admin 日期:2012-04-24
用了两天php的Snoopy这个类,发现很好用。获取请求网页里面的所有链接,直接使用fetchlinks就可以,获取所有文本信息使用fetchtext(其内部还是使用正则表达式在进行处理),还有其它较多的功能,如模拟提交表单等。
使用方法:
- 先下载Snoopy类,下载地址:http://sourceforge.net/projects/snoopy/
- 先实例化一个对象,然后调用相应的方法即可获取抓取的网页信息
- include 'snoopy/Snoopy.class.php';
- $snoopy = new Snoopy();
- $sourceURL = "http://xxxxxxxxx";
- $snoopy->fetchlinks($sourceURL);
- $a = $snoopy->results;
它并没有提供获取网页中所有图片地址的方法,自己有个需求是要获取一个页面中所有文章列表中图片地址。然后自己就写了一个,主要还是正则那里匹配重要。
- //匹配图片的正则表达式
- $reTag = "/<img[^s]+src="(http://[^"]+).(jpg|png|gif|jpeg)"[^/]*/>/i";
利用Snoopy类自动下载图片
作者:admin 日期:2012-04-24
PHP CURL_MULTI 多线程采集网页函数
作者:admin 日期:2012-04-24
PHP CURL_MULTI 多线程采集网页函数
- <?php
- $text = remote(array('http://www.imfeng.com/','http://www.aligaduo.com/'));
- print_r($text);
- function remote($urls) {
- if (!is_array($urls) or count($urls) == 0) {
- return false;
- }
- $curl = $text = array();
- $handle = curl_multi_init();
- foreach($urls as $k => $v) {
- $nurl[$k]= preg_replace('~([^:\/\.]+)~ei', "rawurlencode('\\1')", $v);
- $curl[$k] = curl_init($nurl[$k]);
- curl_setopt($curl[$k], CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl[$k], CURLOPT_HEADER, 0);
- curl_multi_add_handle ($handle, $curl[$k]);
- }
- $active = null;
- do {
- $mrc = curl_multi_exec($handle, $active);
- } while ($mrc == CURLM_CALL_MULTI_PERFORM);
- while ($active && $mrc == CURLM_OK) {
- if (curl_multi_select($handle) != -1) {
- do {
- $mrc = curl_multi_exec($handle, $active);
- } while ($mrc == CURLM_CALL_MULTI_PERFORM);
- }
- }
- foreach ($curl as $k => $v) {
- if (curl_error($curl[$k]) == "") {
- $text[$k] = (string) curl_multi_getcontent($curl[$k]);
- }
- curl_multi_remove_handle($handle, $curl[$k]);
- curl_close($curl[$k]);
- }
- curl_multi_close($handle);
- return $text;
- }
广告位