{"id":638,"date":"2014-07-19T08:47:23","date_gmt":"2014-07-19T08:47:23","guid":{"rendered":"http:\/\/ixyzero.com\/blog\/?p=638"},"modified":"2014-07-19T08:47:23","modified_gmt":"2014-07-19T08:47:23","slug":"%e8%8e%b7%e5%8f%96%e5%ae%a2%e6%88%b7%e7%ab%af%e6%9c%8d%e5%8a%a1%e7%ab%afip%e5%8f%8a%e5%9c%b0%e7%90%86%e4%bd%8d%e7%bd%ae%e4%bf%a1%e6%81%af","status":"publish","type":"post","link":"https:\/\/ixyzero.com\/blog\/archives\/638.html","title":{"rendered":"\u83b7\u53d6\u5ba2\u6237\u7aef\/\u670d\u52a1\u7aefIP\u53ca\u5730\u7406\u4f4d\u7f6e\u4fe1\u606f"},"content":{"rendered":"<p>\u8fd8\u662f\u5728OutOfMemory\u4e0a\u770b\u5230\u7684\u4e00\u6bb5\u4ee3\u7801\uff0c\u81ea\u5df1\u4fee\u6539\u4e86\u4e00\u4e0b\uff0c\u5176\u4e2d\u7684unescape()\u51fd\u6570\u503c\u5f97\u5b66\u4e60\u548c\u641c\u85cf\uff0c\u53e6\u4e00\u70b9\u5c31\u662f\u4eceSina\u7684iplookup\u5e93\u4e2d\u83b7\u53d6\u5730\u7406\u4f4d\u7f6e\u7b49\u4fe1\u606f\u6bd4\u8f83\u6709\u7528\uff1a<\/p>\n<pre class=\"lang:default decode:true \">&lt;?php\n\/**\n* \u83b7\u53d6\u5ba2\u6237\u7aef+\u670d\u52a1\u7aefIP\u53ca\u5730\u7406\u4f4d\u7f6e\u4fe1\u606f Sina iplookup\n**\/\n\/\/\u53d6\u5f97\u5730\u7406\u4f4d\u7f6e\u4fe1\u606f\nfunction iplookup($ip=1){\n\tif($ip){ \/\/\u5ba2\u6237\u7aef\n\t\t$userip = getClientIP(); \/\/\u5ba2\u6237\u7aefIP\n\t}else{ \/\/\u670d\u52a1\u7aef\n\t\t$domain = $_SERVER['HTTP_HOST'];\n\t\t$userip = gethostbyname($domain);\n\t}\n\t\/\/$userip = (getClientIP()=='127.0.0.1')?'107.170.214.214':getClientIP();\n\t\/\/\u8fd4\u56deSina\u5730\u7406\u4f4d\u7f6e\u4fe1\u606f\n\t$json=@file_get_contents('http:\/\/int.dpool.sina.com.cn\/iplookup\/iplookup.php?format=js&amp;ip='.$userip);\n\t$patterns = array();\n\t$patterns[0] = '\/var remote_ip_info = \/';\n\t$patterns[1] = '\/;\/';\n\t$patterns[2] = '\/\\Wu\/';\n\t$find = array();\n\t$find[0] = \"\";\n\t$find[1] = \"\";\n\t$find[2] = \"%u\";\n\t$json = preg_replace($patterns, $find, $json); \/\/\u8fc7\u6ee4\u591a\u4f59\u5b57\u7b26\n\t$json_arr = json_decode($json,true);\n\treturn $json_arr;\n}\n\/\/\u83b7\u53d6\u5ba2\u6237\u7aefIP\nfunction getClientIP(){\n\tif(getenv('HTTP_CLIENT_IP')&amp;&amp;strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')){\n\t\t$ip=getenv('HTTP_CLIENT_IP');\n\t}\n\telseif(getenv('HTTP_X_FORWARDED_FOR')&amp;&amp;strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown')){\n\t\t$ip=getenv('HTTP_X_FORWARDED_FOR');\n\t}\n\telseif(getenv('REMOTE_ADDR')&amp;&amp;strcasecmp(getenv('REMOTE_ADDR'),'unknown')){\n\t\t$ip=getenv('REMOTE_ADDR');\n\t}\n\telseif(isset($_SERVER['REMOTE_ADDR'])&amp;&amp;$_SERVER['REMOTE_ADDR']&amp;&amp;strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){\n\t\t$ip=$_SERVER['REMOTE_ADDR'];\n\t}\n\t$ip=preg_replace(\"\/^([d.]+).*\/\",\"1\",$ip);\n\treturn $ip;\n}\n\/**\n* \u6a21\u62dfJS\u91cc\u7684unescape\n* echo unescape('%u4e2d%u56fd');\n*\/\nfunction unescape($str) {\n\t$str = rawurldecode($str);\n\tpreg_match_all(\"\/(?:%u.{4})|.{4};|&amp;#\\d+;|.+\/U\", $str, $r);\n\t$ar = $r[0];\n\tforeach($ar as $k=&gt;$v) {\n\t\tif(substr($v,0,2) == \"%u\"){\n\t\t\t$ar[$k] = iconv(\"UCS-2\", \"utf-8\/\/IGNORE\", pack(\"H4\",substr($v,-4)));\n\t\t}\n\t\telseif(substr($v,0,3) == \"\"){\n\t\t\t$ar[$k] = iconv(\"UCS-2\", \"utf-8\", pack(\"H4\",substr($v,3,-1)));\n\t\t}\n\t\telseif(substr($v,0,2) == \"&amp;#\"){\n\t\t\techo substr($v,2,-1).\"\";\n\t\t\t$ar[$k] = iconv(\"UCS-2\", \"utf-8\", pack(\"n\",substr($v,2,-1)));\n\t\t}\n\t}\n\treturn join(\"\",$ar);\n}\n\n$iplookup = iplookup();\t\/\/iplookup()\u7684\u53c2\u6570\u4e3a0\u5219\u662f\u83b7\u53d6\u670d\u52a1\u5668\u7aefIP\uff0c\u9ed8\u8ba4\u4e3a\u83b7\u53d6\u5ba2\u6237\u7aefIP\n\necho \"IP\uff1a\".getClientIP().\"&lt;br&gt;\";\necho '\u8fd4\u56de\u72b6\u6001\uff1a'.$iplookup['ret'].\"&lt;br&gt;\";\necho 'IP\u8303\u56f4Strat\uff1a'.$iplookup['start'].\"&lt;br&gt;\";\necho 'IP\u8303\u56f4End\uff1a'.$iplookup['end'].\"&lt;br&gt;\";\necho '\u56fd\u5bb6\uff1a'.unescape($iplookup['country']).\"&lt;br&gt;\";\necho '\u7701\u4efd\uff1a'.unescape($iplookup['province']).\"&lt;br&gt;\";\necho '\u57ce\u5e02\uff1a'.unescape($iplookup['city']).\"&lt;br&gt;\";\necho '\u533a\/\u53bf\uff1a'.unescape($iplookup['district']).\"&lt;br&gt;\";\necho '\u7ebf\u8def\uff1a'.unescape($iplookup['isp']).\"&lt;br&gt;\";\necho '\u7c7b\u578b\uff1a'.$iplookup['type'].\"&lt;br&gt;\";\necho '\u63cf\u5199\uff1a'.$iplookup['desc'].\"&lt;br&gt;\";\nprint_r($iplookup);<\/pre>\n<p>\u4eceSina\u7684iplookup\u5e93\u4e2d\u83b7\u53d6\u7ed3\u679c\u540e\uff0c\u9700\u8981\u5148\u7528preg_replace()\u51fd\u6570\u8fc7\u6ee4\u6389\u591a\u4f59\u5b57\u7b26\u7136\u540e\u518d\u4ea4\u7ed9json_decode()\u51fd\u6570\u5904\u7406\uff0c\u800c\u4e14\u5176\u4e2d\u6570\u7ec4\u4e0b\u6807\u4e3acountry\u3001province\u3001city\u3001district\u3001isp\u7684\u5185\u5bb9\u662fUnicode\u7f16\u7801\u7684\uff0c\u4e5f\u53ef\u4ee5\u7528\u4e4b\u524d\u6587\u7ae0\u4e2d\u8bf4\u7684\u65b9\u6cd5\u8fdb\u884c\u89e3\u7801\uff08<a title=\"Unicode\u7f16\u7801\u89e3\u7801\u7684PHP\u811a\u672c[bak]\" href=\"http:\/\/ixyzero.com\/blog\/archives\/483.html\" target=\"_blank\">Unicode\u7f16\u7801\u89e3\u7801\u7684PHP\u811a\u672c[bak]<\/a>\uff09\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd8\u662f\u5728OutOfMemory\u4e0a\u770b\u5230\u7684\u4e00\u6bb5\u4ee3\u7801\uff0c\u81ea\u5df1\u4fee\u6539\u4e86\u4e00\u4e0b\uff0c\u5176\u4e2d\u7684unescape()\u51fd\u6570\u503c\u5f97\u5b66\u4e60\u548c\u641c\u85cf\uff0c\u53e6 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,12],"tags":[245,48,169,217],"class_list":["post-638","post","type-post","status-publish","format-standard","hentry","category-programing","category-tools","tag-json_decode","tag-php","tag-preg_replace","tag-unicode"],"views":2522,"_links":{"self":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/638","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/comments?post=638"}],"version-history":[{"count":0,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/638\/revisions"}],"wp:attachment":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/media?parent=638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/categories?post=638"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/tags?post=638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}