制作好一个输出PR图片的API

> ╮(╯▽╰)╭ 昨天白夜三更写的,糊涂地忘记了已经有蛮多网站提供这个功能了,结果就杯具了。
> 不过也没什么,这篇文章刚刚好总结一下 Curl 函数和 File_get_contents 函数的用法。

> 好多服务器为了防采集都禁止 File_get_contents,所以介绍一下俩函数互相替代的方法。
> 话说,昨天给 619 的模板导航栏上加上了分类目录的显示,但我觉得那个模板的函数有点奇怪。

P.s. 呵呵,使用方法如图,作为图片显示即可,有兴趣的童鞋可以调用过去玩玩 O(∩_∩)O。

1. File_get_contents 函数

> 使用如下的代码可以将变量 $GontenPRURL 里的路径指向的文件读入字符串 $filecontent 中。
> 只要在 Url 中传递参数即可到 Google 获取到 PR 的数值,然后转换为相对的图片文件名称。

1
$filecontent = file_get_contents($prurl);

> 我简单的使用下面的函数代码过滤了一下 Url 地址。
> 因为没法过滤引号,所以后面再使用 Preg_match 的正则式过滤文件头。

1
2
$evlos_re = array("\"","'","!","@","#","$","%","^","&","*","(",")","+","=");
$website = str_replace($evlos_re,"",$website);

> 最后再输出一个文件头,再把作为字符串的图片接着输出即可。

1
2
header("Content-Type: image/jpeg; charset=UTF-8");
echo $content;

2. Curl 函数

> 注意!!CURLOPT_URL 参数是不支持相对路径的,网上没看到有人提到,害我差点没折腾挂掉。

1
2
3
4
5
6
7
$ch1 = curl_init();
$timeout1 = 15;
curl_setopt ($ch1, CURLOPT_URL, $prurl);
curl_setopt ($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch1, CURLOPT_CONNECTTIMEOUT, $timeout1);
$filecontent = curl_exec($ch1);
curl_close($ch1);

> 这里就得用那么长的代码来代替上面 File_get_contents 函数的那一行代码了。

1
2
3
$fixurl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$fixurl = str_replace(basename($_SERVER['PHP_SELF']),"",$fixurl);
$pic = $fixurl.$pic;

> $pic 是我的 PR 图片文件,这里通过上面代码把相对路径转换为 Url 路径。
> 最后也差不多,输出一个文件头,再把作为字符串的图片接着输出即可。

1
2
3
4
5
6
7
$ch2 = curl_init();
$timeout2 = 15;
curl_setopt ($ch2, CURLOPT_URL, $pic);
curl_setopt ($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch2, CURLOPT_CONNECTTIMEOUT, $timeout2);
$content = curl_exec($ch2);
curl_close($ch2);

3. 同行输出日志分类与博客页面列表

> 话说原先 Sandbox 只输出博客页面列表的时候 Header.php 只调用了一个函数:

1
<?php sandbox_globalnav() ?>

> 然后在主题函数 Functions.php 里面加了一大段这个代码:

1
2
3
4
5
6
7
function sandbox_globalnav() {
	if ( $menu = str_replace( array( "\r", "\n", "\t" ), '', 
wp_list_pages('title_li=&sort_column=menu_order&echo=0') ) )
		$menu = '<ul>' . $menu . '</ul>';
	$menu = '<div id="menu">' . $menu . "</div>\n";
	echo apply_filters( 'globalnav_menu', $menu ); 
}

> 我觉得其实没啥必要的样子,因为下面使用 WP 自带的函数输出一个 Li 列表也是可以达到相同效果的。
> 博客页面是 Wp_list_pages,文章分类是 Wp_list_categories。

1
2
3
4
<div id="menu">
<?php wp_list_categories('title_li=0&orderby=name&show_count=0');
wp_list_pages('title_li=0&sort_column=menu_order'); ?>
</div>

> 然后在 CSS 文件里面把 Li 变成行内元素即可,话说 Li 真是一个神奇的东西。

1
2
3
4
#access li {
display:inline;
padding-left:8px;
}

4. 调用说明页面传送门

> http://tool.evlos.org/primg/

5. 欢迎来 Follow 我的 Twitter @AngelSolo

Leave a comment

70 Comments.

  1. awu 坐沙发!#1

    哦,弄上好的twitter名了?

  2. 阿士 坐板凳!#2

    呵呵,我的twitter是ashisay

  3. Sawyer 躺地板!#3

    GG这次也由8,终于给自己满级了。
    PS:貌似现在不翻墙,还是不能推吧?

    • @Sawyer , 呵呵 ~ GG是10 百度9 Bing也9 ~
      不翻墙肯定上不去的 ~
      而且这段时间封BT封机房 ~
      TW上的言论不是一般的河蟹 ~

  4. 卢松松 天花板!#4

    都是针对WP的! :rolleyes:

  5. SATURN 下水道!#5

    目前PR还为零,不忍心去看。。。

  6. 没有太过关注这个图标的样式,不过,倒挺关注图标里的那个数字!呵呵~~

  7. 百度都把我网站K了....

  8. 这个生成图片的函数一直没接处,看了你这个有些认识。但是还是不懂啊,用你的话就是杯具了,呵呵。
    等假期的我找你给我补PHP的课,呵呵。别逃啊。

  9. 很实用的api

  10. 看不懂…… :mad:

  11. pr的图片为什么都是这个老样子....。一个白底绿方框,内嵌一个绿底白字的pr值,不要右边的bar了。 :arrow:

  12. 听说还有可以 做虚假 PR的。 罗刹越来月牛啦。。。

  13. 国内到10的也就一个备案站...

  14. 有点深奥,没看明白。。。。

  15. 搞技术是寂寞的!很诚实的告诉你,我也看不懂!哈哈!
    P.S:我放学了 :mrgreen:

  16. 好久都没看代码了,看见上面的代码,我都晕菜了

  17. 高手啊,这都会写~

  18. PR为0的我~~~泪奔(PД`q。)·。'゜

  19. 我用不到。。。

  20. @北街 , 嘿嘿,就是这样,才有乐趣 ~

  21. 这个开发出来了?如何整合到咱们站上?

  22. :confused: 怎么又是一个我看不懂的文章……

  23. WP的用户就是幸福,后悔选择ZB了。

  24. 我的PR好久没有提升了

  25. 现在看到代码就有点头痛,白头一整天都在看,晚上真的不想再看代码了。

  26. 整个10在那里,要吓死一堆人了估计

  27. ( ⊙o⊙ )哇 那个圣诞老人不错~··

Leave a Reply

:evil: :razz: :wink: :rolleyes: :redface: :cry: :biggrin: :lol: :idea: :mrgreen: :mad: :exclaim: more »

[ Ctrl + Enter ]