<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>郑州网建 - 应用接口</title><link>http://camnpr.com/</link><description>Good Good Study ,Day Day Up! - </description><generator>RainbowSoft Studio Z-Blog 1.8 Walle Build 100427</generator><language>zh-CN</language><copyright>豫ICP备10013645号 Copyright 2009-2022 camnpr.com</copyright><pubDate>Wed, 15 Apr 2026 17:57:01 +0800</pubDate><item><title>如何用PHP代码实现限制国内IP访问我们网站（利用淘宝的IP接口）</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/api/2258.html</link><pubDate>Mon, 29 Feb 2016 10:42:38 +0800</pubDate><guid>http://camnpr.com/api/2258.html</guid><description><![CDATA[<p>利用淘宝的IP接口来判断IP，是否是国内的ip，是国内（CN）的就不允许访问。</p><pre class="brush:php;">$ip = $_SERVER['REMOTE_ADDR'];<br>$content = file_get_contents(‘http://ip.taobao.com/service/getIpInfo.php?ip='.$ip);<br>$banned = json_decode(trim($content), true);<br>$lan = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']);<br>if((!empty($banned['data']['country_id']) &amp;&amp; $banned['data']['country_id'] == ‘CN') || strstr($lan, ‘zh'))<br>{<br>header(“HTTP/1.0 404 Not Found”);<br>echo ‘HTTP/1.0 404 Not Found';<br>exit;<br>}</pre><p>同时发现一篇好文章：http://luhuang.sinaapp.com/redis-setnx/ 《Redis 来限制高并发 php代码实例》</p><p>Redis本质上也是一种键值数据库的，但它在保持键值数据库简单快捷特点的同时，又吸收了部分关系数据库的优点。从而使它的位置处于关系数据库和键值数据库之间。Redis不仅能保存Strings类型的数据，还能保存Lists类型（有序）和Sets类型（无序）的数据，而且还能完成排序（SORT） 等高级功能，在实现INCR，SETNX等功能的时候，保证了其操作的原子性，除此以外，还支持主从复制等功能。<br> Redis 来限制高并发 <br> php代码实例</p><pre class="brush:php;">$redis-&gt;setnx(‘lock:hot_items', true)<br>//尝试创建一个key作为”锁”.若key已存在,setnx不会做任何动作且返回值为false,所以只有一个客户端会返回true值进入if语句更新缓存. <br>$redis = new redis();<br>$redis_key = ‘lock:hot_items';<br>$clock_expire_time = $redis-&gt;get($redis_key);<br>if(!empty($clock_expire_time) &amp;&amp; time() &gt; intval($clock_expire_time))<br>{<br>//解除当前Redis锁<br>$redis-&gt;delete($redis_key);<br>}<br><br>if($redis-&gt;setnx($redis_key, time() + 3) !== true)<br>{<br>echo ‘高并发有冲突';<br>}<br><br>//操作你的代码, 同一时刻就一个人访问该代码了<br><br>//解除当前Redis锁<br>$redis-&gt;delete($redis_key);</pre>]]></description><category>应用接口</category><comments>http://camnpr.com/api/2258.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=2258</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=2258&amp;key=39fc1b78</trackback:ping></item><item><title>美团支付通过生成机器指纹信息提交到支付宝的私有API完成手机支付操作</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/api/2106.html</link><pubDate>Wed, 26 Aug 2015 10:50:12 +0800</pubDate><guid>http://camnpr.com/api/2106.html</guid><description><![CDATA[<p>应用开发过程中要对接支付宝支付，简单体验下来，市面上有三种实现方式:</p><ol>    <li>网页版</li>    <li>快捷支付服务插件版</li>    <li>美团版(姑且这么叫，由于先发现美团是这种实现，其实大众点评也是这种)</li></ol><p>前2种没什么疑问，应用广泛，实现上支付宝也都给出了SDK，第3种实现各种&ldquo;诡异&rdquo;：</p><ul>    <li>完全是App原生的体验，没有发现支付宝有公开的支持方式</li>    <li>没有在应用数据包和SD卡上找到任何痕迹</li>    <li>美团退出登录再登录依然可用，卸载再安装依然可用(免登录列出支付信息，只需要输入支付密码)，美团登录一次，安装大众点评也直接可用。</li>    <li>手机恢复出厂设置依然可用，恐怖吧？</li></ul><h3>探究竟</h3><p>验证查找下来觉得各种不可思议，找不到痕迹，最后只能放大招：重装系统。这招倒是有效了，但是信息存在哪里了呢？各种搜索无效。很恐怖，很费解，各种不舒服有木有？</p><p>这问题不搞明白得一直不舒服下去。。。所以决定反编译看看美团到底搞了什么鬼（想当然的认为Mac下反编译不好处理，还拖了2天，真搞起来发现像linux下一样简单快捷。。）</p><p>虽然反编译出来的代码有误差，但是还是很快定位到一切诡异的所在，实现是这样的：算是有一个内部的api吧，应用生成一个机器指纹（嗯，就这么叫吧，唯一的不变的机器相关的信息，由一些可获取的基本信息组合而来，即使机器恢复出厂设置这个信息也不会变），然后提交到支付宝的一个请求地址(这里不贴了，有兴趣的同学反编译下吧～～)，获取用户支付宝账号的信息。每次支付之前，用机器指纹查询支付信息，然后完成支付。</p><p>所有的诡异都明了了：这是一个私有Api，少数App可用，登录状态存在服务器上，本地根本不会保存，由于不变的机器指纹，卸载重装或者其他应用来使用结果都一样，恢复出厂设置，也没有改变机器指纹。只要不重装，一次登录，时时可用，处处（有权使用Api的App）可用，目前尚不知道会不会有时间有效期，我表示只能呵呵了。。。</p><p>问题搞清楚了，心里敞亮了，可是这做法也太狠了点吧？</p><h3>额外赠送</h3><p>拿到Url后，Google查询了一下，信息有限，不过发现这个Url，支付宝的客户端也在用。同时发现了一个非常不错的服务：<a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=http%3A%2F%2Fmobilesandbox%7Corg%2F" target="_blank">Mobile Sandbox</a>。</p><p>分析APK文件，生成分析报告，支持静态分析和动态分析，可以获得很多信息：</p><ol>    <li>是否有恶意病毒功能</li>    <li>可能的危险调用</li>    <li>有那些资源文件</li>    <li>使用的硬件特性，使用的权限，调用的系统Api</li>    <li>调用的Intents，使用的Activitys，Providers，服务和广播接收器</li>    <li>请求了那些Url</li></ol><p>附上一个针对支付宝的分析报告：<a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=http%3A%2F%2Fmobilesandbox%7Corg%2Freport%2F%3Fq%3D314747" target="_blank">http://mobilesandbox.org/report/?q=314747</a></p><p>有意思的About页面：<a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=http%3A%2F%2Fmobilesandbox%7Corg%2Fabout%2F" target="_blank">http://mobilesandbox.org/about/</a></p><p>服务非常不错，但是也有很多不足：服务还在开发完善中，上传的Apk文件要排队等分析，三天前上传的文件还是idle状态；没有做中文支持，搜索中文报错，上传的文件中文名乱码；搜索功能比较弱智。</p>]]></description><category>应用接口</category><comments>http://camnpr.com/api/2106.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=2106</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=2106&amp;key=10cbd4fa</trackback:ping></item><item><title>微信开发开源框架：3款值得推荐（Wechat-PHP-SDK、微信公众平台 PHP SDK、Wechat-php）</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/api/2018.html</link><pubDate>Thu, 28 May 2015 10:55:51 +0800</pubDate><guid>http://camnpr.com/api/2018.html</guid><description><![CDATA[<p>微信（英文名：wechat）是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序，微信支持跨通信运营商、跨操作系统平台通过网络快速发送免费（需消耗少量网络流量）语音短信、视频、图片和文字，同时，也可以使用通过共享流媒体内容的资料和基于位置的社交插件“摇一摇”、“漂流瓶”、“朋友圈”、”公众平台“、”语音记事本“等服务插件。</p><p>微信提供公众平台、朋友圈、消息推送等功能，用户可以通过“摇一摇”、“搜索号码”、“附近的人”、扫二维码方式添加好友和关注公众平台，同时微信将内容分享给好友以及将用户看到的精彩内容分享到微信朋友圈。</p><p>截至2013年11月注册用户量已经突破6亿，是亚洲地区最大用户群体的移动即时通讯软件。基于这么庞大的用户群体，针对微信公众平台的营销也随之而来，水涨船高的公众平台的二次开发也愈发的热门起来，今天我们就来具体探讨下几款值得推荐的微信开源框架。</p><p>　　1. Wechat-PHP-SDK<br> &nbsp;<br> 　　微信公众平台 PHP 开发包，细化各项接口操作，支持链式调用。<br> &nbsp;<br> 　　Github托管地址：dodgepudding/wechat-php-sdk<br></p><p>　　2. 微信公众平台 PHP SDK<br> &nbsp;<br> 　　简单的微信公众平台 PHP SDK ，通过调用相应的接口，使你可以轻松地开发微信 App 。<br> &nbsp;<br> 　　Github托管地址：netputer/wechat-php-sdk<br></p><p>　　3. Wechat-php<br> &nbsp;<br> 　　本微信SDK实现了被动响应的官方 API 已经主动发送消息给订阅用户，主动批量发送消息给订阅用户。<br> &nbsp;<br> 　　Github托管地址：ligboy/Wechat-php<br> &nbsp;<br> 　　非常强大的微信公众平台开发框架推荐中有官方和第三方开发者提供的丰富的插件，是免费并且成熟的框架，更多的信息可以点击这里：</p><p>&nbsp;•微擎：<a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=http%3A%2F%2Fwww%7Cwe7%7Ccc%2F"  target="_blank">http://www.we7.cc/</a><br> &nbsp;•微笑：<a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=http%3A%2F%2Fwww%7Csylai%7Ccom%2F"  target="_blank">http://www.sylai.com/</a><br> &nbsp;•weiphp：<a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=http%3A%2F%2Fwww%7Cweiphp%7Ccn%2F"  target="_blank">http://www.weiphp.cn/</a></p>]]></description><category>应用接口</category><comments>http://camnpr.com/api/2018.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=2018</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=2018&amp;key=e07220c7</trackback:ping></item><item><title>为什么百度分享代码不显示分享数量? </title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/api/1969.html</link><pubDate>Thu, 02 Apr 2015 14:30:38 +0800</pubDate><guid>http://camnpr.com/api/1969.html</guid><description><![CDATA[<div id="noimgcss"><p>我按照百度分享官网上的<a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=http%3A%2F%2Fshare%7Cbaidu%7Ccom%2Fcode" target="_blank">获取代码</a>获取了代码如下：</p><pre class="brush:html">&lt;div class=&quot;bdsharebuttonbox&quot;&gt;&lt;a href=&quot;#&quot; class=&quot;bds_more&quot; data-cmd=&quot;more&quot;&gt;&lt;/a&gt;&lt;a href=&quot;#&quot; class=&quot;bds_qzone&quot; data-cmd=&quot;qzone&quot; title=&quot;分享到QQ空间&quot;&gt;&lt;/a&gt;&lt;a href=&quot;#&quot; class=&quot;bds_tsina&quot; data-cmd=&quot;tsina&quot; title=&quot;分享到新浪微博&quot;&gt;&lt;/a&gt;&lt;a href=&quot;#&quot; class=&quot;bds_tqq&quot; data-cmd=&quot;tqq&quot; title=&quot;分享到腾讯微博&quot;&gt;&lt;/a&gt;&lt;a href=&quot;#&quot; class=&quot;bds_renren&quot; data-cmd=&quot;renren&quot; title=&quot;分享到人人网&quot;&gt;&lt;/a&gt;&lt;a href=&quot;#&quot; class=&quot;bds_weixin&quot; data-cmd=&quot;weixin&quot; title=&quot;分享到微信&quot;&gt;&lt;/a&gt;&lt;/div&gt;<br />&lt;script&gt;window._bd_share_config={&quot;common&quot;:{&quot;bdSnsKey&quot;:{},&quot;bdText&quot;:&quot;&quot;,&quot;bdMini&quot;:&quot;2&quot;,&quot;bdMiniList&quot;:false,&quot;bdPic&quot;:&quot;&quot;,&quot;bdStyle&quot;:&quot;0&quot;,&quot;bdSize&quot;:&quot;32&quot;},&quot;share&quot;:{},&quot;image&quot;:{&quot;viewList&quot;:[&quot;qzone&quot;,&quot;tsina&quot;,&quot;tqq&quot;,&quot;renren&quot;,&quot;weixin&quot;],&quot;viewText&quot;:&quot;分享到：&quot;,&quot;viewSize&quot;:&quot;32&quot;},&quot;selectShare&quot;:{&quot;bdContainerClass&quot;:null,&quot;bdSelectMiniList&quot;:[&quot;qzone&quot;,&quot;tsina&quot;,&quot;tqq&quot;,&quot;renren&quot;,&quot;weixin&quot;]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];&lt;/script&gt;</pre><p>于是乎，我粘贴到了我的网站上，正常显示如下：</p><p><img src="http://camnpr.com/upload/2015/4/201504021402168708.jpg" alt="百度分享" width="451" height="159" /></p><p>接着，我微博分享了一下，刷新页面后，不显示数字，猜测可能是缓存吧，我再第二天，再来看还是没数字，</p><p>最后查找了一下原因：</p><p>&lt;a class=&quot;shareCount&quot;&gt;&lt;/a&gt; //在此处增加或删除标签来进行展现控制。&nbsp;<br /><br />给这帮助里旧的代码 加到新的代码中 <strong>不好使</strong></p><p>最后的最后，终于找到了一个可以显示分享数量的代码：</p><p><span style="color: rgb(255, 0, 0);" data-mce-style="color: #ff0000;"><strong>&lt;a class=&quot;bds_count&quot; data-cmd=&quot;count&quot;&gt;&lt;/a&gt;</strong></span></p><p><strong>为了验证上边的代码是否成功，你可以点击下边的<span style="color: rgb(255, 0, 0);">分享试一下</span>！！！</strong></p><p>吐槽一下：这么明显的问题，官网上为何不修复，连说明也没有。难道缺人，我能去吗？哈哈！！！</p></div>]]></description><category>应用接口</category><comments>http://camnpr.com/api/1969.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1969</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1969&amp;key=f6014f31</trackback:ping></item><item><title>百度实时推送新发布文章的api接口应用示例（socketopen方式推送sitemap）</title><author>kuabaobao_com@163.com (kuabaobao)</author><link>http://camnpr.com/api/1958.html</link><pubDate>Thu, 26 Mar 2015 10:19:51 +0800</pubDate><guid>http://camnpr.com/api/1958.html</guid><description><![CDATA[<p>网站质量不错的网站可以在百度站长平台/数据提交/sitemap栏目下看到实时推送的功能, 目前这个工具是邀请开放, 百度的实时推送的api接口可以实时推送我们新发布的文章, 保证百度在第一时间收录.<br />&nbsp;<br />百度站长平台 <a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=http%3A%2F%2Fzhanzhang%7Cbaidu%7Ccom%2F" target="_blank">http://zhanzhang.baidu.com/</a></p><p>打开百度站长平台, 点开实时推送的添加新数据接口获得带token的api推送地址：<br />&nbsp;<br />&nbsp; <a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=http%3A%2F%2Fping%7Cbaidu%7Ccom%2Fsitemap%3Fsite%3Dwww%7Cyourdomain%7Ccom%26amp%3Bresource_name%3Dsitemap%26amp%3Baccess_token%3Dxxxxxxx" target="_blank">http://ping.baidu.com/sitemap?site=www.yourdomain.com&amp;resource_name=sitemap&amp;access_token=xxxxxxx</a>&nbsp;<br />&nbsp;</p><p><strong>分享一段网友写的php实时推送代码:&nbsp;</strong></p><p>php 实时推送新发布的文章</p><p>socketopen方式推送sitemap</p><div>代码如下:</div><pre class="brush:php"> &nbsp;function sitemap_ping_baidu($urls){<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $baidu_ping_url = 'ping.baidu.com';<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $get = '/sitemap?site=www.yourdomain.com&amp;resource_name=sitemap&amp;access_token=xxxxxxx';<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $port=80;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( ( $io = fsockopen( $baidu_ping_url, $port, $errno, $errstr, 50 ) ) !== false )&nbsp; {<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $send = &quot;POST $get HTTP/1.1&quot;.&quot;rn&quot;;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $send .= 'Accept: */*'.&quot;rn&quot;;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $send .= 'Cache-Control: no-cache'.&quot;rn&quot;;<br /> &nbsp; <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $send .= 'Host: '.$baidu_ping_url.&quot;rn&quot;;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $send .= 'Pragma: no-cache'.&quot;rn&quot;;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //$send .= &quot;Referer: http://&quot;.$url.$get.&quot;rn&quot;;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //$send .= 'User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)'.&quot;rn&quot;;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $xml = '&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;urlset&gt;';<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach($urls as $url){<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $xml .= '&lt;url&gt;';<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $xml .= '&lt;loc&gt;&lt;![CDATA['.$url.']]&gt;&lt;/loc&gt;';<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $xml .= '&lt;lastmod&gt;'.date('Y-m-d').'&lt;/lastmod&gt;';<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $xml .= '&lt;changefreq&gt;monthly&lt;/changefreq&gt;';<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $xml .= '&lt;priority&gt;0.8&lt;/priority&gt;';<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $xml .= '&lt;/url&gt;';<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $xml .= '&lt;/urlset&gt;';<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $send .= 'Content-Length:'.strlen($xml).&quot;rn&quot;;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $send .= &quot;Connection: Closernrn&quot;;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $send .= $xml.&quot;rn&quot;;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fputs ( $io, $send );<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $return = '';<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ( ! feof ( $io ) )<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $return .= fread ( $io, 4096 );<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $return;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /> &nbsp;&nbsp; }<br /> $return = sitemap_ping_baidu(array('http://www.yourdomain.com/a.php?id=1')); </pre><p><strong>推送后百度会返回的xml文档</strong></p><div>代码如下:</div><pre class="brush:xml"> &nbsp;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp; &lt;methodResponse&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;params&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;int&gt;200&lt;/int&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/value&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/params&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /> &nbsp;&nbsp;&nbsp;&nbsp; &lt;/methodResponse&gt; </pre><p><strong>状态码含义如下</strong></p><table border="1">    <tbody>        <tr>            <td>200</td>            <td>无使用方式错误，需要进一步观察返回的内容是否正确</td>        </tr>        <tr>            <td>400</td>            <td>必选参数未提供</td>        </tr>        <tr>            <td>405</td>            <td>不支持的请求方式，我们只支持POST方式提交数据</td>        </tr>        <tr>            <td>411</td>            <td>HTTP头中缺少Content-Length字段</td>        </tr>        <tr>            <td>413</td>            <td>推送的数据过大，超过了10MB的限制</td>        </tr>        <tr>            <td>422</td>            <td>HTTP头中Content-Length声明的长度和实际发送的数据长度不一致</td>        </tr>        <tr>            <td>500</td>            <td>站长平台服务器内部错误</td>        </tr>    </tbody></table>]]></description><category>应用接口</category><comments>http://camnpr.com/api/1958.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1958</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1958&amp;key=15874e4a</trackback:ping></item><item><title>PHP结合谷歌的Translate API实现自己的翻译脚本的示例代码</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/api/1710.html</link><pubDate>Mon, 03 Nov 2014 13:52:27 +0800</pubDate><guid>http://camnpr.com/api/1710.html</guid><description><![CDATA[<p>PHP代码：</p><div>代码如下:</div><pre class="brush:php">#!/usr/bin/php -q<br>&lt;?php<br>/** <br>&nbsp;* PHP Script For Google Translate<br>&nbsp;* @author:Yishan Wang<br>&nbsp;* @version:1.0.0<br>&nbsp;*/<br>class Google_API_translator<br>{<br>&nbsp;public $url = "http://translate.google.com/translate_t";<br>&nbsp;public $text = "";<br>&nbsp;public $out = "";<br>&nbsp;public $ip = '';<br>&nbsp;function setText($text){<br>&nbsp;&nbsp;$this-&gt;text = $text;<br>&nbsp;}<br>&nbsp;function translate($from='auto',$to='zh-CN'){<br>&nbsp;&nbsp;$this-&gt;out = "";<br>&nbsp;&nbsp;$gphtml = $this-&gt;postPage($this-&gt;url, $this-&gt;text,$from,$to); //@camnpr<br>&nbsp;&nbsp;preg_match_all('/&lt;span/s+title/="[^&gt;]+&gt;([^&lt;]+)&lt;//span&gt;/i',$gphtml,$res);<br>&nbsp;&nbsp;$this-&gt;out = $res[1][0];<br>&nbsp;&nbsp;return $this-&gt;out;<br>&nbsp;}<br>&nbsp;/*<br>&nbsp;$from&nbsp; 需要翻译的语言<br>&nbsp;$to&nbsp;&nbsp;&nbsp; 翻译的语言<br>&nbsp;*/<br>&nbsp;function postPage($url, $text,$from='auto',$to='zh-CN'){<br>&nbsp;&nbsp;$html ='';<br>&nbsp;&nbsp;if($url != "" &amp;&amp; $text != "") {<br>&nbsp;&nbsp;&nbsp;$ch = curl_init($url);<br>&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br>&nbsp;&nbsp;&nbsp;if(!empty($this-&gt;ip) &amp;&amp; is_string($this-&gt;ip)){<br>&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_INTERFACE,$this-&gt;ip);<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_HEADER, 1);<br>&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);<br>&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_TIMEOUT, 15);<br>&nbsp;&nbsp;&nbsp;/*<br>&nbsp;&nbsp;&nbsp;*hl - 界面语言，此处无用。<br>&nbsp;&nbsp;&nbsp;*langpair - src lang to dest lang<br>&nbsp;&nbsp;&nbsp;*ie - urlencode的编码方式?<br>&nbsp;&nbsp;&nbsp;*text - 要翻译的文本<br>&nbsp;&nbsp;&nbsp;*/<br>&nbsp;&nbsp;&nbsp;$fields = array('hl=zh-CN', 'langpair='.$from.'|'.$to, 'ie=UTF-8','text='.$text);<br>&nbsp;&nbsp;&nbsp;$fields = implode('&amp;', $fields);<br>&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_POST, 1);// @郑州网建<br>&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_POSTFIELDS,$fields);<br>&nbsp;&nbsp;&nbsp;$html = curl_exec($ch);<br>&nbsp;&nbsp;&nbsp;if(curl_errno($ch)) $html = "";<br>&nbsp;&nbsp;&nbsp;curl_close ($ch);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;return $html;<br>&nbsp;}<br>}<br>&nbsp;$from = !empty($_REQUEST['fromlan'])?$_REQUEST['fromlan']:'en';<br>&nbsp;$to = !empty($_REQUEST['tolan'])?$_REQUEST['tolan']:'zh-CN';<br>&nbsp;$keywords&nbsp; = "";<br>&nbsp;for($i=1;$i&lt;$argc;$i++){<br>&nbsp;&nbsp;$keywords .= $argv[$i]." ";&nbsp;//@camnpr<br>&nbsp;}<br>&nbsp;$article = !empty($_REQUEST['article'])?$_REQUEST['article']:$keywords;<br>&nbsp;$g = new Google_API_translator();<br>&nbsp;if(isset($_REQUEST['ip']) &amp;&amp; !empty($_REQUEST['ip']))<br>&nbsp;{<br>&nbsp;$g -&gt; ip = $_REQUEST['ip'];<br>&nbsp;}<br>&nbsp;$article = iconv('GBK','UTF-8',$article);<br>&nbsp;$article = str_replace('{enter}',"/r/n",$article);<br>&nbsp;$g-&gt;setText($article);<br>&nbsp;$g-&gt;translate($from,$to);<br>&nbsp;echo "-----------翻译结果--------------/n";<br>&nbsp;echo iconv('GBK','UTF-8',$g-&gt;out);<br>&nbsp;echo "/n";<br>?&gt;</pre><p>2、将以上内容保存名为“gtranslate”的文件中。</p><p>3、给gtranslate添加执行权限</p><p>&nbsp;&nbsp;&nbsp; chmod a+x gtranslate</p><p>4、创建软连接</p><p>&nbsp;&nbsp;&nbsp; ln -s /yourpath/gtranslate /usr/bin/gtranslate</p><p>5、输入测试词汇：</p><p>&nbsp;&nbsp;&nbsp; gtranslate Hello World</p><p><br>&nbsp;&nbsp;&nbsp; -----------翻译结果--------------<br>&nbsp;&nbsp;&nbsp; 世界您好</p><p>&gt;&gt;&gt;</p><p>6、做了个中英文互译的版本。</p><p>用 gtranslate China ，英译汉</p><p>用 gtranslate -r 中国 ，汉译英</p><p>&gt;&gt;&gt;</p>]]></description><category>应用接口</category><comments>http://camnpr.com/api/1710.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1710</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1710&amp;key=eda48016</trackback:ping></item><item><title>百度分享中的划词分享功能如何取消？ selectShare</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/api/1695.html</link><pubDate>Tue, 28 Oct 2014 15:07:38 +0800</pubDate><guid>http://camnpr.com/api/1695.html</guid><description><![CDATA[<div id="noimgcss"><p>社交的工具越来越多，为此加入了百度的百度分享功能，就是文章右上角可以点击将文章分享到微博、QQ空间、微信等，但是发现一个问题，就是选中文章内容中的文字部分无法复制文字，只要选中文字后点击鼠标右键就会弹出百度的划词分享，非常烦人，下面就给同样遭遇的朋友分享下解决方法。</p><p>&nbsp;&nbsp;&nbsp; 这里先介绍下百度的划词分享效果，如下图所示：</p><p><img title="" src="http://camnpr.com/upload/2014/10/201410281503534337.jpg" data-bd-imgshare-binded="1"  width="382" height="183"></p><p>&nbsp;&nbsp;&nbsp; 划词分享本来是好东东，但是影响人家复制文本就不好了，那么该如何取消百度分享中的划词分享功能呢？这就要分析百度分享的代码部分了，下面给出百度分享的整个代码：</p><blockquote>&lt;div class="bdsharebuttonbox"&gt;&lt;a href="#" class="bds_more" data-cmd="more"&gt;&lt;/a&gt;&lt;a href="#" class="bds_qzone" data-cmd="qzone"&gt;&lt;/a&gt;&lt;a href="#" class="bds_tsina" data-cmd="tsina"&gt;&lt;/a&gt;&lt;a href="#" class="bds_tqq" data-cmd="tqq"&gt;&lt;/a&gt;&lt;a href="#" class="bds_renren" data-cmd="renren"&gt;&lt;/a&gt;&lt;a href="#" class="bds_weixin" data-cmd="weixin"&gt;&lt;/a&gt;&lt;/div&gt;<br>&lt;script&gt;window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到：","viewSize":"16"}<span style="text-decoration: line-through;" data-mce-style="text-decoration: line-through;">,"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}</span>};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];&lt;/script&gt;</blockquote><p>&nbsp;&nbsp;&nbsp; 通过百度分享的说明中发现，划词分享的标签为selectShare，知道了这个就简单了，直接在上面代码部分将selectShare设置删除即可，即将上面代码中红色部分删除。</p><p>&nbsp;</p></div>]]></description><category>应用接口</category><comments>http://camnpr.com/api/1695.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1695</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1695&amp;key=1ec72f32</trackback:ping></item><item><title>UEditor（ASP版）自动提交上传图片并添加水印的示例代码</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/api/1687.html</link><pubDate>Sat, 25 Oct 2014 16:12:47 +0800</pubDate><guid>http://camnpr.com/api/1687.html</guid><description><![CDATA[<p>先下载ueditor（ASP版），然后</p><p>找到：ueditor\ueditor.config.js文件：</p><pre class="brush:text">//启用自动保存<br />, enableAutoSave: true<br />, autoSyncData: true//自动同步编辑器要提交的数据</pre><p>找到：\ueditor\asp\Uploader.Class.asp 文件，</p><p>修改代码为：</p><pre class="brush:vb">Private Function DoUpload( stream, filename )<br />rsFileSize = stream.Size<br /> If rsFileSize &gt; cfgMaxSize Then<br /> rsState = stateString.Item( &quot;SIZE_LIMIT_EXCCEED&quot; )<br /> Exit Function<br /> End If<br />rsOriginalFileName = filename<br /> fileType = GetExt(filename)<br /> If CheckExt(fileType) = False Then<br /> rsState = stateString.Item( &quot;TYPE_NOW_ALLOW&quot; )<br /> Exit Function<br /> End If<br /> <br /> Set formatter = new PathFormatter<br /> rsFilePath = formatter.format( cfgPathFormat, filename )<br /> <br /> savePath = Server.MapPath(rsFilePath)<br /> CheckOrCreatePath( GetDirectoryName(savePath) )<br />stream.SaveToFile savePath<br /> stream.Close<br />'======================================================camnpr.com<br /> Dim Jpeg <br /> Set Jpeg = Server.CreateObject(&quot;Persits.Jpeg&quot;) <br /> Jpeg.Open savePath ' 图片所在位置 <br /> Dim aa <br /> aa=Jpeg.Binary '将原始数据赋给aa <br /> '=========加文字水印================= <br /> Jpeg.Canvas.Font.Color = &amp;Hccccccc '水印文字颜色 @camnpr<br /> Jpeg.Canvas.Font.Family = &quot;宋体_GB2312&quot; '字体 <br /> 'Jpeg.Canvas.Font.Bold = true '是否加粗 <br /> Jpeg.Canvas.Font.Size = 16 '字体大小 <br /> Jpeg.Canvas.Font.ShadowColor = &amp;H000000 '阴影色彩 <br /> Jpeg.Canvas.Font.ShadowYOffset = 1 <br /> Jpeg.Canvas.Font.ShadowXOffset = 1 <br /> Jpeg.Canvas.Brush.Solid = True <br /> Jpeg.Canvas.Font.Quality = 4 '输出质量 <br /> Jpeg.Canvas.Print Jpeg.OriginalWidth-220,Jpeg.OriginalHeight-30,&quot;布布在线 WWW.BUBUOL.COM&quot; '水印位置及文字 <br /> bb=Jpeg.Binary '将文字水印处理后的值赋给bb，这时，文字水印没有不透明度 <br /> '============调整文字透明度================ <br /> dim MyJpeg <br /> Dim Logo <br /> dim bb <br /> Set MyJpeg = Server.CreateObject(&quot;Persits.Jpeg&quot;) <br /> MyJpeg.OpenBinary aa <br /> Set Logo = Server.CreateObject(&quot;Persits.Jpeg&quot;) <br /> Logo.OpenBinary bb <br /> MyJpeg.DrawImage 0,0, Logo, 0.4 '0.4是透明度 @camnpr<br /> MyJpeg.Save savePath ' 保存文件 <br /> set aa=nothing <br /> set bb=nothing <br /> Jpeg.close <br /> MyJpeg.Close <br /> Logo.Close<br /> '======================================================end camnpr.com<br />rsState = &quot;SUCCESS&quot;<br /> End Function</pre>]]></description><category>应用接口</category><comments>http://camnpr.com/api/1687.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1687</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1687&amp;key=2ced7108</trackback:ping></item><item><title>百度ECharts图表Y轴的科学计数法的渲染问题（自定义formatter）</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/api/1621.html</link><pubDate>Fri, 29 Aug 2014 14:57:12 +0800</pubDate><guid>http://camnpr.com/api/1621.html</guid><description><![CDATA[<div id="noimgcss"><p>ECharts，缩写来自Enterprise Charts，商业级数据图表，一个纯Javascript的图表库，可以流畅的运行在PC和移动设备上，兼容当前绝大部分浏览器（IE6/7/8/9/10/11，chrome，firefox，Safari等）。</p><p>支持折线图（区域图）、柱状图（条状图）、散点图（气泡图）、K线图、饼图（环形图）、雷达图（填充雷达图）、和弦图、力导向布局图、地图、仪表盘、漏斗图等11类图表，同时提供标题，详情气泡、图例、值域、数据区域、时间轴、工具箱等7个可交互组件，支持多图表、组件的联动和混搭展现。</p><p>可能还要涉及到科学计数法的渲染问题。</p><p>比如&nbsp;<code>2000</code>&nbsp;是渲染成&nbsp;<code>2e3</code>&nbsp;还是渲染成&nbsp;<code>2*10^3</code>&nbsp;,或者 2*103，或者直接显示<code>2000</code></p><p>如图：<img src="http://camnpr.com/upload/2014/8/201408291455156288.jpg" alt="" width="396" height="393" /></p><p><strong>解决方法：</strong>数据渲染可以通过自定义formatter，代码如下：</p><pre class="brush:php">option = {<br />&nbsp; &nbsp;grid: { // 关于此配置项的说明，见下边的备注说明<br /> &nbsp; &nbsp;width: '700px',<br /> &nbsp; &nbsp;height: '200px',    x: 80,    y: 20,    x2: 0,    y2: 0<br /> },<br /> tooltip : {<br /> &nbsp; &nbsp;trigger: 'axis'<br /> },<br /> calculable : false,<br /> xAxis : [<br /> {<br /> &nbsp; &nbsp;type : 'category',<br /> &nbsp; &nbsp;boundaryGap : false,<br /> &nbsp; &nbsp;data : ['周一','周二','周三','周四','周五','周六','周日']<br /> }<br /> ],<br /> yAxis : [<br /> {<br /> &nbsp; &nbsp;type : 'value',<br /> &nbsp; &nbsp;axisLabel : {<br /> &nbsp; &nbsp;&nbsp; &nbsp;formatter: function(v){<br /> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return (v/1000)+'千'<br /> &nbsp; &nbsp;&nbsp; &nbsp;}<br /> &nbsp; &nbsp;}<br /> }<br /> ],<br /> series : [<br /> {<br /> &nbsp; &nbsp;name:'郑州网建',<br /> &nbsp; &nbsp;type:'line',<br /> &nbsp; &nbsp;data:[11, 1158, 15, 123233, 12, 12333, 320]<br /> },<br /> {<br /> &nbsp; &nbsp;name:'Camnpr',<br /> &nbsp; &nbsp;type:'line',<br /> &nbsp; &nbsp;data:[1, -2, 2, 5, 3, 2, 0]<br /> }<br /> ]<br />};</pre><p>效果如下：<img src="http://camnpr.com/upload/2014/8/201408291455524860.jpg" alt="" width="595" height="270" /></p><strong><span style="color: rgb(255, 0, 0);">备注</span></strong><span style="color: rgb(255, 0, 0);">：关于grid选项里的：width,height,x,y,x2,y2的说明，关乎样式问题：</span><br /><img onload="ResizeImage(this,520)" src="http://camnpr.com/upload/2014/8/201408291502568787.jpg" alt="ECharts grid样式" title="ECharts grid样式" /></div>]]></description><category>应用接口</category><comments>http://camnpr.com/api/1621.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1621</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1621&amp;key=96e95119</trackback:ping></item><item><title>Alexa的XML API获取网站的Alexa排名的PHP示例代码</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/api/1600.html</link><pubDate>Tue, 19 Aug 2014 14:13:21 +0800</pubDate><guid>http://camnpr.com/api/1600.html</guid><description><![CDATA[<p>我们通会用Alexa的网站(或其它站长工具网站)来栓查我们的网​站流量排名，这样就必须去那些网站。实际上，可以通过Alexa XML API 获取网站的Alexa相关的数据（XML格式的），再使用XML解析器来解析Alexa返回的XML，得到Alexa排名或其它的数据。<br><br><strong>Alexa接口</strong></p><p>Alexa的XML API接口是：http://data.alexa.com/data?cli=10&amp;url=%YOUR_URL%</p><p>如果想获取更多的数据可以用：http://data.alexa.com/data?cli=10&amp;dat=snbamz&amp;url=%YOUR_URL%</p><p>用http://data.alexa.com/data?cli=10&amp;dat=snbamz&amp;url=camnpr.com返回的数据如下：</p><div>代码如下:</div><pre class="brush:xml">&lt;ALEXA VER="0.9" URL="camnpr.com/" HOME="0" AID="=" IDN="camnpr.com/"&gt;<br>&lt;script id="tinyhippos-injected"/&gt;<br>&lt;RLS PREFIX="http://" more="0"&gt;&lt;/RLS&gt;<br>&lt;SD TITLE="A" FLAGS="" HOST="camnpr.com"&gt;<br>&lt;LINKSIN NUM="128"/&gt;<br>&lt;/SD&gt;<br>&lt;SD&gt;<br>&lt;POPULARITY URL="camnpr.com/" TEXT="796686" SOURCE="panel"/&gt;<br>&lt;REACH RANK="603984"/&gt;<br>&lt;RANK DELTA="+31182"/&gt;<br>&lt;COUNTRY CODE="CN" NAME="China" RANK="40350"/&gt;<br>&lt;/SD&gt;<br>&lt;/ALEXA&gt;</pre><p><br>其中POPULARITY元素中的TEXT属性的值796686就是Alexa排名。</p><p><strong>代码实现:</strong></p><p>用PHP实现通过Alexa API 获取Alexa排名的代码为：</p><div>代码如下:</div><pre class="brush:php">&lt;php&gt;<br>function getAlexaRank ($Domain){<br>&nbsp;&nbsp;&nbsp;&nbsp; $line = "";<br>&nbsp;&nbsp;&nbsp;&nbsp; $data = "";<br>&nbsp;&nbsp;&nbsp;&nbsp; $URL = "http://data.alexa.com/data/?cli=10&amp;dat=snba&amp;url=". $Domain ;<br>&nbsp;&nbsp;&nbsp;&nbsp; $fp = fopen ($URL ,"r");<br>&nbsp;&nbsp;&nbsp;&nbsp; if ($fp ){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (!feof ($fp )){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $line = fgets ($fp );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $data .= $line ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $p= xml_parser_create ();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml_parse_into_struct ($p , $data , $vals );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml_parser_free ($p );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for ($i =0 ;$i &lt;count ($vals );$i ++){<br>&nbsp;&nbsp;if ($vals [$i ]["tag"]=="POPULARITY"){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp; $vals [$i ]["attributes"]["TEXT"];<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>}<br>?&gt;<br></pre><p>使用方法：</p><div>代码如下:</div><pre class="brush:php">&lt;?php<br>&nbsp;&nbsp;&nbsp; echo getAlexaRank("camnpr.com");<br>?&gt;</pre>]]></description><category>应用接口</category><comments>http://camnpr.com/api/1600.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1600</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1600&amp;key=e9566340</trackback:ping></item></channel></rss>
