<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>夏雪飘飞</title>
	<atom:link href="http://www.poloo.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.poloo.org</link>
	<description>人生得意须尽欢-莫等金樽空对月</description>
	<lastBuildDate>Thu, 03 May 2012 08:40:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>通过调用淘宝IP地址库获取IP的位置</title>
		<link>http://www.poloo.org/?p=813</link>
		<comments>http://www.poloo.org/?p=813#comments</comments>
		<pubDate>Thu, 03 May 2012 08:40:35 +0000</pubDate>
		<dc:creator>澜琼</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[地址库]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[调用]]></category>

		<guid isPermaLink="false">http://www.poloo.org/?p=813</guid>
		<description><![CDATA[通过淘宝开发的IP地址查询获取IP对应的地区 。 不是原创，只是转帖；淘宝的ip地址库应该算是有权威性的，并且淘宝提供了很便捷的接口方式，大家也不用为了获取ip信息而发愁了。 1. 请求接口（GET）： http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串] 2. 响应信息： （json格式的）国家 、省（自治区或直辖市）、市（县）、运营商 3. 返回数据格式： {"code":0,"data":{"ip":"210.75.225.254","country":"\u4e2d\u56fd","area":"\u534e\u5317", "region":"\u5317\u4eac\u5e02","city":"\u5317\u4eac\u5e02","county":"","isp":"\u7535\u4fe1", "country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000", "county_id":"-1","isp_id":"100017"}} 其中code的值的含义为，0：成功，1：失败。]]></description>
			<content:encoded><![CDATA[<p>通过淘宝开发的IP地址查询获取IP对应的地区 。<br />
不是原创，只是转帖；淘宝的ip地址库应该算是有权威性的，并且淘宝提供了很便捷的接口方式，大家也不用为了获取ip信息而发愁了。</p>
<p><span id="more-813"></span></p>
<pre class="brush:php">1. 请求接口（GET）：

http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]

2. 响应信息：

（json格式的）国家 、省（自治区或直辖市）、市（县）、运营商

3. 返回数据格式：
{"code":0,"data":{"ip":"210.75.225.254","country":"\u4e2d\u56fd","area":"\u534e\u5317",
"region":"\u5317\u4eac\u5e02","city":"\u5317\u4eac\u5e02","county":"","isp":"\u7535\u4fe1",
"country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000",
"county_id":"-1","isp_id":"100017"}}
其中code的值的含义为，0：成功，1：失败。</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.poloo.org/?feed=rss2&#038;p=813</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>犀利的php代码碎片</title>
		<link>http://www.poloo.org/?p=809</link>
		<comments>http://www.poloo.org/?p=809#comments</comments>
		<pubDate>Sat, 28 Apr 2012 01:59:29 +0000</pubDate>
		<dc:creator>澜琼</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[关键字]]></category>
		<category><![CDATA[压缩]]></category>
		<category><![CDATA[密码]]></category>
		<category><![CDATA[短地址]]></category>
		<category><![CDATA[维护]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://www.poloo.org/?p=809</guid>
		<description><![CDATA[自动生成密码： function generatePassword($length=9, $strength=0) { $vowels = 'aeuy'; $consonants = 'bdghjmnpqrstvz'; if ($strength &#62;= 1) { $consonants .= 'BDGHJLMNPQRSTVWXZ'; } if ($strength &#62;= 2) { $vowels .= "AEUY"; } if ($strength &#62;= 4) { $consonants .= '23456789'; } if ($strength &#62;= 8 ) { $vowels .= '@#$%'; } $password = ''; $alt = time() % [...]]]></description>
			<content:encoded><![CDATA[<p>自动生成密码：</p>
<pre class="brush:php">function generatePassword($length=9, $strength=0) {
	$vowels = 'aeuy';
	$consonants = 'bdghjmnpqrstvz';
	if ($strength &gt;= 1) {
		$consonants .= 'BDGHJLMNPQRSTVWXZ';
	}
	if ($strength &gt;= 2) {
		$vowels .= "AEUY";
	}
	if ($strength &gt;= 4) {
		$consonants .= '23456789';
	}
	if ($strength &gt;= 8 ) {
		$vowels .= '@#$%';
	}

	$password = '';
	$alt = time() % 2;
	for ($i = 0; $i &lt; $length; $i++) {
		if ($alt == 1) {
			$password .= $consonants[(rand() % strlen($consonants))];
			$alt = 0;
		} else {
			$password .= $vowels[(rand() % strlen($vowels))];
			$alt = 1;
		}
	}
	return $password;
}</pre>
<p><span id="more-809"></span></p>
<p>高亮关键字：</p>
<pre class="brush:php">function highlight($sString, $aWords) {
	if (!is_array ($aWords) || empty ($aWords) || !is_string ($sString)) {
		return false;
	}

	$sWords = implode ('|', $aWords);
 	return preg_replace ('@\b('.$sWords.')\b@si', '&lt;strong style="background-color:yellow"&gt;$1&lt;/strong&gt;', $sString);
}</pre>
<p>压缩多个CSS：</p>
<pre class="brush:php">header('Content-type: text/css');
ob_start("compress");
function compress($buffer) {
  /* remove comments */
  $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
  /* remove tabs, spaces, newlines, etc. */
  $buffer = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $buffer);
  return $buffer;
}

/* your css files */
include('master.css');
include('typography.css');
include('grid.css');
include('print.css');
include('handheld.css');

ob_end_flush();</pre>
<p>获取短地址：</p>
<pre class="brush:php">function getTinyUrl($url) {
    return file_get_contents("http://tinyurl.com/api-create.php?url=".$url);
}</pre>
<p>根据生日计算年龄：</p>
<pre class="brush:php">function age($date){
	$year_diff = '';
	$time = strtotime($date);
	if(FALSE === $time){
		return '';
	}

	$date = date('Y-m-d', $time);
	list($year,$month,$day) = explode("-",$date);
	$year_diff = date("Y") – $year;
	$month_diff = date("m") – $month;
	$day_diff = date("d") – $day;
	if ($day_diff &lt; 0 || $month_diff &lt; 0) $year_diff–;

	return $year_diff;
}</pre>
<p>禁止CSS被缓存：</p>
<pre class="brush:php">&lt;link href="/stylesheet.css?&lt;?php echo time(); ?&gt;" rel="stylesheet" type="text/css" /&gt;</pre>
<p>系统维护模式：</p>
<pre class="brush:php">function maintenance($mode = FALSE){
    if($mode){
        if(basename($_SERVER['SCRIPT_FILENAME']) != 'maintenance.php'){
            header("Location: http://example.com/maintenance.php");
            exit;
        }
    }else{
        if(basename($_SERVER['SCRIPT_FILENAME']) == 'maintenance.php'){
            header("Location: http://example.com/");
            exit;
        }
    }
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.poloo.org/?feed=rss2&#038;p=809</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>禁止页面缓存</title>
		<link>http://www.poloo.org/?p=806</link>
		<comments>http://www.poloo.org/?p=806#comments</comments>
		<pubDate>Sat, 28 Apr 2012 01:47:04 +0000</pubDate>
		<dc:creator>澜琼</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://www.poloo.org/?p=806</guid>
		<description><![CDATA[header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pramga: no-cache");]]></description>
			<content:encoded><![CDATA[<pre class="brush:php">header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pramga: no-cache");</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.poloo.org/?feed=rss2&#038;p=806</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>无限分类[增强版]</title>
		<link>http://www.poloo.org/?p=804</link>
		<comments>http://www.poloo.org/?p=804#comments</comments>
		<pubDate>Sat, 28 Apr 2012 01:28:02 +0000</pubDate>
		<dc:creator>澜琼</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[无限分类]]></category>

		<guid isPermaLink="false">http://www.poloo.org/?p=804</guid>
		<description><![CDATA[使用方法： 用法: $tree = new Tree; // new 之前请记得包含tree文件! $tree-&#62;tree($data); // 数据格式请参考 tree方法上面的注释! // 如果使用数组, 请使用 getArray方法 $tree-&#62;getArray(); // 下拉菜单选项使用 get_tree方法 $tree-&#62;get_tree(); &#60;?php /** +------------------------------------------------ * 通用的树型类 +------------------------------------------------ * @author yangyunzhou@foxmail.com +------------------------------------------------ * @date 2010年11月23日10:09:31 +------------------------------------------------ */ class Tree { /** +------------------------------------------------ * 生成树型结构所需要的2维数组 +------------------------------------------------ * @author yangyunzhou@foxmail.com +------------------------------------------------ * @var Array */ var $arr [...]]]></description>
			<content:encoded><![CDATA[<p>使用方法：</p>
<pre class="brush:php">用法: 

$tree = new Tree;           // new 之前请记得包含tree文件!
$tree-&gt;tree($data);         // 数据格式请参考 tree方法上面的注释!

// 如果使用数组, 请使用 getArray方法
$tree-&gt;getArray();

// 下拉菜单选项使用 get_tree方法
$tree-&gt;get_tree();</pre>
<p><span id="more-804"></span></p>
<pre class="brush:php">&lt;?php
/**
 +------------------------------------------------
 * 通用的树型类
 +------------------------------------------------
 * @author yangyunzhou@foxmail.com
 +------------------------------------------------
 * @date 2010年11月23日10:09:31
 +------------------------------------------------
 */
class Tree
{

    /**
     +------------------------------------------------
     * 生成树型结构所需要的2维数组
     +------------------------------------------------
     * @author yangyunzhou@foxmail.com
     +------------------------------------------------
     * @var Array
     */
    var $arr = array();

    /**
     +------------------------------------------------
     * 生成树型结构所需修饰符号，可以换成图片
     +------------------------------------------------
     * @author yangyunzhou@foxmail.com
     +------------------------------------------------
     * @var Array
     */
    var $icon = array('│','├',' └');

    /**
    * @access private
    */
    var $ret = '';

    /**
    * 构造函数，初始化类
    * @param array 2维数组，例如：
    * array(
    *      1 =&gt; array('id'=&gt;'1','parentid'=&gt;0,'name'=&gt;'一级栏目一'),
    *      2 =&gt; array('id'=&gt;'2','parentid'=&gt;0,'name'=&gt;'一级栏目二'),
    *      3 =&gt; array('id'=&gt;'3','parentid'=&gt;1,'name'=&gt;'二级栏目一'),
    *      4 =&gt; array('id'=&gt;'4','parentid'=&gt;1,'name'=&gt;'二级栏目二'),
    *      5 =&gt; array('id'=&gt;'5','parentid'=&gt;2,'name'=&gt;'二级栏目三'),
    *      6 =&gt; array('id'=&gt;'6','parentid'=&gt;3,'name'=&gt;'三级栏目一'),
    *      7 =&gt; array('id'=&gt;'7','parentid'=&gt;3,'name'=&gt;'三级栏目二')
    *      )
    */
    function tree($arr=array())
    {
       $this-&gt;arr = $arr;
       $this-&gt;ret = '';
       return is_array($arr);
    }

    /**
    * 得到父级数组
    * @param int
    * @return array
    */
    function get_parent($myid)
    {
        $newarr = array();
        if(!isset($this-&gt;arr[$myid])) return false;
        $pid = $this-&gt;arr[$myid]['parentid'];
        $pid = $this-&gt;arr[$pid]['parentid'];
        if(is_array($this-&gt;arr))
        {
            foreach($this-&gt;arr as $id =&gt; $a)
            {
                if($a['parentid'] == $pid) $newarr[$id] = $a;
            }
        }
        return $newarr;
    }

    /**
    * 得到子级数组
    * @param int
    * @return array
    */
    function get_child($myid)
    {
        $a = $newarr = array();
        if(is_array($this-&gt;arr))
        {
            foreach($this-&gt;arr as $id =&gt; $a)
            {
                if($a['parentid'] == $myid) $newarr[$id] = $a;
            }
        }
        return $newarr ? $newarr : false;
    }

    /**
    * 得到当前位置数组
    * @param int
    * @return array
    */
    function get_pos($myid,&amp;$newarr)
    {
        $a = array();
        if(!isset($this-&gt;arr[$myid])) return false;
        $newarr[] = $this-&gt;arr[$myid];
        $pid = $this-&gt;arr[$myid]['parentid'];
        if(isset($this-&gt;arr[$pid]))
        {
            $this-&gt;get_pos($pid,$newarr);
        }
        if(is_array($newarr))
        {
            krsort($newarr);
            foreach($newarr as $v)
            {
                $a[$v['id']] = $v;
            }
        }
        return $a;
    }

    /**
     * -------------------------------------
     *  得到树型结构
     * -------------------------------------
     * @author yangyunzhou@foxmail.com
     * @param $myid 表示获得这个ID下的所有子级
     * @param $str 生成树形结构基本代码, 例如: "&lt;option value=\$id \$select&gt;\$spacer\$name&lt;/option&gt;"
     * @param $sid 被选中的ID, 比如在做树形下拉框的时候需要用到
     * @param $adds
     * @param $str_group
     */
    function get_tree($myid, $str, $sid = 0, $adds = '', $str_group = '')
    {
        $number=1;
        $child = $this-&gt;get_child($myid);
        if(is_array($child)) {
            $total = count($child);
            foreach($child as $id=&gt;$a) {
                $j=$k='';
                if($number==$total) {
                    $j .= $this-&gt;icon[2];
                } else {
                    $j .= $this-&gt;icon[1];
                    $k = $adds ? $this-&gt;icon[0] : '';
                }
                $spacer = $adds ? $adds.$j : '';
                $selected = $id==$sid ? 'selected' : '';
                @extract($a);
                $parentid == 0 &amp;&amp; $str_group ? eval("\$nstr = \"$str_group\";") : eval("\$nstr = \"$str\";");
                $this-&gt;ret .= $nstr;
                $this-&gt;get_tree($id, $str, $sid, $adds.$k.'&amp;nbsp;',$str_group);
                $number++;
            }
        }
        return $this-&gt;ret;
    }

    /**
    * 同上一方法类似,但允许多选
    */
    function get_tree_multi($myid, $str, $sid = 0, $adds = '')
    {
        $number=1;
        $child = $this-&gt;get_child($myid);
        if(is_array($child))
        {
            $total = count($child);
            foreach($child as $id=&gt;$a)
            {
                $j=$k='';
                if($number==$total)
                {
                    $j .= $this-&gt;icon[2];
                }
                else
                {
                    $j .= $this-&gt;icon[1];
                    $k = $adds ? $this-&gt;icon[0] : '';
                }
                $spacer = $adds ? $adds.$j : '';

                $selected = $this-&gt;have($sid,$id) ? 'selected' : '';
                @extract($a);
                eval("\$nstr = \"$str\";");
                $this-&gt;ret .= $nstr;
                $this-&gt;get_tree_multi($id, $str, $sid, $adds.$k.'&amp;nbsp;');
                $number++;
            }
        }
        return $this-&gt;ret;
    }

    function have($list,$item){
        return(strpos(',,'.$list.',',','.$item.','));
    }

    /**
     +------------------------------------------------
     * 格式化数组
     +------------------------------------------------
     * @author yangyunzhou@foxmail.com
     +------------------------------------------------
     */
    function getArray($myid=0, $sid=0, $adds='')
    {
        $number=1;
        $child = $this-&gt;get_child($myid);
        if(is_array($child)) {
            $total = count($child);
            foreach($child as $id=&gt;$a) {
                $j=$k='';
                if($number==$total) {
                    $j .= $this-&gt;icon[2];
                } else {
                    $j .= $this-&gt;icon[1];
                    $k = $adds ? $this-&gt;icon[0] : '';
                }
                $spacer = $adds ? $adds.$j : '';
                @extract($a);
                $a['name'] = $spacer.' '.$a['name'];
                $this-&gt;ret[$a['id']] = $a;
                $fd = $adds.$k.'&amp;nbsp;';
                $this-&gt;getArray($id, $sid, $fd);
                $number++;
            }
        }

        return $this-&gt;ret;
    }
}
?&gt;</pre>
<p>原帖：http://www.oschina.net/code/snippet_99943_2521</p>
]]></content:encoded>
			<wfw:commentRss>http://www.poloo.org/?feed=rss2&#038;p=804</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php无限分类, 支持输出树状图</title>
		<link>http://www.poloo.org/?p=799</link>
		<comments>http://www.poloo.org/?p=799#comments</comments>
		<pubDate>Sat, 28 Apr 2012 01:02:46 +0000</pubDate>
		<dc:creator>澜琼</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[下载]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[树结构]]></category>

		<guid isPermaLink="false">http://www.poloo.org/?p=799</guid>
		<description><![CDATA[tree.class.php &#160; &#60;?php /** * 通用的树型类，可以生成任何树型结构 */ class tree { /** * 生成树型结构所需要的2维数组 * @var array */ var $arr = array(); /** * 生成树型结构所需修饰符号，可以换成图片 * @var array */ var $icon = array('│','├','└'); /** * @access private */ var $ret = ''; /** * 构造函数，初始化类 * @param array 2维数组，例如： * array( * 1 =&#62; array('id'=&#62;'1','parentid'=&#62;0,'name'=&#62;'一级栏目一'), * [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-801" title="001" src="http://www.poloo.org/uploads//2012/04/001.jpg" alt="" width="134" height="121" /></p>
<p><img class="alignnone size-full wp-image-802" title="002" src="http://www.poloo.org/uploads//2012/04/002.jpg" alt="" width="86" height="51" /><br />
<span id="more-799"></span></p>
<p><a href="http://www.poloo.org/uploads//2012/04/tree.class.rar">tree.class.php</a></p>
<p>&nbsp;</p>
<pre class="brush:php">&lt;?php
/**
* 通用的树型类，可以生成任何树型结构
*/
class tree
{
	/**
	* 生成树型结构所需要的2维数组
	* @var array
	*/
	var $arr = array();

	/**
	* 生成树型结构所需修饰符号，可以换成图片
	* @var array
	*/
	var $icon = array('│','├','└');

	/**
	* @access private
	*/
	var $ret = '';

	/**
	* 构造函数，初始化类
	* @param array 2维数组，例如：
	* array(
	*      1 =&gt; array('id'=&gt;'1','parentid'=&gt;0,'name'=&gt;'一级栏目一'),
	*      2 =&gt; array('id'=&gt;'2','parentid'=&gt;0,'name'=&gt;'一级栏目二'),
	*      3 =&gt; array('id'=&gt;'3','parentid'=&gt;1,'name'=&gt;'二级栏目一'),
	*      4 =&gt; array('id'=&gt;'4','parentid'=&gt;1,'name'=&gt;'二级栏目二'),
	*      5 =&gt; array('id'=&gt;'5','parentid'=&gt;2,'name'=&gt;'二级栏目三'),
	*      6 =&gt; array('id'=&gt;'6','parentid'=&gt;3,'name'=&gt;'三级栏目一'),
	*      7 =&gt; array('id'=&gt;'7','parentid'=&gt;3,'name'=&gt;'三级栏目二')
	*      )
	*/
	function tree($arr=array())
	{
       $this-&gt;arr = $arr;
	   $this-&gt;ret = '';
	   return is_array($arr);
	}

    /**
	* 得到父级数组
	* @param int
	* @return array
	*/
	function get_parent($myid)
	{
		$newarr = array();
		if(!isset($this-&gt;arr[$myid])) return false;
		$pid = $this-&gt;arr[$myid]['parentid'];
		$pid = $this-&gt;arr[$pid]['parentid'];
		if(is_array($this-&gt;arr))
		{
			foreach($this-&gt;arr as $id =&gt; $a)
			{
				if($a['parentid'] == $pid) $newarr[$id] = $a;
			}
		}
		return $newarr;
	}

    /**
	* 得到子级数组
	* @param int
	* @return array
	*/
	function get_child($myid)
	{
		$a = $newarr = array();
		if(is_array($this-&gt;arr))
		{
			foreach($this-&gt;arr as $id =&gt; $a)
			{
				if($a['parentid'] == $myid) $newarr[$id] = $a;
			}
		}
		return $newarr ? $newarr : false;
	}

    /**
	* 得到当前位置数组
	* @param int
	* @return array
	*/
	function get_pos($myid,&amp;$newarr)
	{
		$a = array();
		if(!isset($this-&gt;arr[$myid])) return false;
        $newarr[] = $this-&gt;arr[$myid];
		$pid = $this-&gt;arr[$myid]['parentid'];
		if(isset($this-&gt;arr[$pid]))
		{
		    $this-&gt;get_pos($pid,$newarr);
		}
		if(is_array($newarr))
		{
			krsort($newarr);
			foreach($newarr as $v)
			{
				$a[$v['id']] = $v;
			}
		}
		return $a;
	}

	/**
	 * -------------------------------------
	 *  得到树型结构
	 * -------------------------------------
	 * @author  Midnight(杨云洲),  yangyunzhou@foxmail.com
	 * @param $myid 表示获得这个ID下的所有子级
	 * @param $str 生成树形结构基本代码, 例如: "&lt;option value=\$id \$select&gt;\$spacer\$name&lt;/option&gt;"
	 * @param $sid 被选中的ID, 比如在做树形下拉框的时候需要用到
	 * @param $adds
	 * @param $str_group
	 * @return unknown_type
	 */
	function get_tree($myid, $str, $sid = 0, $adds = '', $str_group = '')
	{
		$number=1;
		$child = $this-&gt;get_child($myid);
		if(is_array($child))
		{
		    $total = count($child);
			foreach($child as $id=&gt;$a)
			{
				$j=$k='';
				if($number==$total)
				{
					$j .= $this-&gt;icon[2];
				}
				else
				{
					$j .= $this-&gt;icon[1];
					$k = $adds ? $this-&gt;icon[0] : '';
				}
				$spacer = $adds ? $adds.$j : '';
				$selected = $id==$sid ? 'selected' : '';
				@extract($a);
				$parentid == 0 &amp;&amp; $str_group ? eval("\$nstr = \"$str_group\";") : eval("\$nstr = \"$str\";");
				$this-&gt;ret .= $nstr;
				$this-&gt;get_tree($id, $str, $sid, $adds.$k.'&amp;nbsp;',$str_group);
				$number++;
			}
		}
		return $this-&gt;ret;
	}
    /**
	* 同上一方法类似,但允许多选
	*/
	function get_tree_multi($myid, $str, $sid = 0, $adds = '')
	{
		$number=1;
		$child = $this-&gt;get_child($myid);
		if(is_array($child))
		{
		    $total = count($child);
			foreach($child as $id=&gt;$a)
			{
				$j=$k='';
				if($number==$total)
				{
					$j .= $this-&gt;icon[2];
				}
				else
				{
					$j .= $this-&gt;icon[1];
					$k = $adds ? $this-&gt;icon[0] : '';
				}
				$spacer = $adds ? $adds.$j : '';

				$selected = $this-&gt;have($sid,$id) ? 'selected' : '';
				//echo $sid.'=&gt;'.$id.' : '.$selected.' . &lt;br/&gt;';
				@extract($a);
				eval("\$nstr = \"$str\";");
				$this-&gt;ret .= $nstr;
				$this-&gt;get_tree_multi($id, $str, $sid, $adds.$k.'&amp;nbsp;');
				$number++;
			}
		}
		return $this-&gt;ret;
	}

	function have($list,$item){
		return(strpos(',,'.$list.',',','.$item.','));
	}
}
?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.poloo.org/?feed=rss2&#038;p=799</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android访问php取回json数据</title>
		<link>http://www.poloo.org/?p=785</link>
		<comments>http://www.poloo.org/?p=785#comments</comments>
		<pubDate>Fri, 27 Apr 2012 10:38:44 +0000</pubDate>
		<dc:creator>澜琼</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.poloo.org/?p=785</guid>
		<description><![CDATA[PHP代码： $array = array( 'username'=&#62;'杨铸', 'password'=&#62;'123456', 'user_id'=&#62;1 ); echo json_encode($array); java代码： private void startUrlCheck(String username,String password) { HttpClient client = new DefaultHttpClient(); StringBuilder builder = new StringBuilder(); HttpGet myget = new HttpGet("http://10.0.2.2/Android/index.php"); try { HttpResponse response = client.execute(myget); BufferedReader reader = new BufferedReader(new InputStreamReader( response.getEntity().getContent())); for (String s = reader.readLine(); s != null; s = [...]]]></description>
			<content:encoded><![CDATA[<p>PHP代码：</p>
<pre class="brush: php;">$array = array(
'username'=&gt;'杨铸',
'password'=&gt;'123456',
'user_id'=&gt;1
);
echo json_encode($array); </pre>
<p><span id="more-785"></span><br />
<br/><br />
java代码：<br/></p>
<pre class="brush: java;">private void startUrlCheck(String username,String password)
{
	HttpClient client = new DefaultHttpClient();
	StringBuilder builder = new StringBuilder();

	HttpGet myget = new HttpGet("http://10.0.2.2/Android/index.php");
	try {
		HttpResponse response = client.execute(myget);
		BufferedReader reader = new BufferedReader(new InputStreamReader(
		response.getEntity().getContent()));
		for (String s = reader.readLine(); s != null; s = reader.readLine()) {
			builder.append(s);
		}
		JSONObject jsonObject = new JSONObject(builder.toString());
		String re_username = jsonObject.getString("username");
		String re_password = jsonObject.getString("password");
		int re_user_id = jsonObject.getInt("user_id");
		setTitle("用户id_"+re_user_id);
		Log.v("url response", "true="+re_username);
		Log.v("url response", "true="+re_password);
	} catch (Exception e) {
		Log.v("url response", "false");
		e.printStackTrace();
	}
}</pre>
<p><br/><br />
说明：<br />
<br/><code><br />
其中http://10.0.2.2为Android访问本机url的ip地址。对应电脑上测试的http://127.0.0.1</p>
<p>另外执行代码时会抛出异常</p>
<p>java.net.SocketException: Permission denied</p>
<p>此为应用访问网络的权限不足 在AndroidManifest.xml中，需要进行如下配置：<br />
<uses-permission Android:name="android.permission.INTERNET" /><br />
就加在<br />
</manifest><br />
之前就好了<br />
然后测试通过。<br />
</code><br />
原文：http://www.oschina.net/code/snippet_12_1122</p>
]]></content:encoded>
			<wfw:commentRss>http://www.poloo.org/?feed=rss2&#038;p=785</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php加密解密</title>
		<link>http://www.poloo.org/?p=779</link>
		<comments>http://www.poloo.org/?p=779#comments</comments>
		<pubDate>Fri, 27 Apr 2012 02:23:16 +0000</pubDate>
		<dc:creator>澜琼</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.poloo.org/?p=779</guid>
		<description><![CDATA[&#60;?php // 参数解释 // $string： 明文 或 密文 // $operation：DECODE表示解密,其它表示加密 // $key： 密匙 // $expiry：密文有效期 function authcode($string, $operation = &#8216;DECODE&#8217;, $key = &#8216;xiaogg&#8217;, $expiry = 0) {     // 动态密匙长度，相同的明文会生成不同密文就是依靠动态密匙     $ckey_length = strlen($key);     // 密匙     $key = md5($key);     // 密匙a会参与加解密     $keya = md5(substr($key, 0, 16));     // 密匙b会用来做数据完整性验证     $keyb [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>&lt;?php<br />
// 参数解释<br />
// $string： 明文 或 密文<br />
// $operation：DECODE表示解密,其它表示加密<br />
// $key： 密匙<br />
// $expiry：密文有效期<br />
function authcode($string, $operation = &#8216;DECODE&#8217;, $key = &#8216;xiaogg&#8217;, $expiry = 0) {<br />
    // 动态密匙长度，相同的明文会生成不同密文就是依靠动态密匙<br />
    $ckey_length = strlen($key);<br />
    // 密匙<br />
    $key = md5($key);<br />
    // 密匙a会参与加解密<br />
    $keya = md5(substr($key, 0, 16));<br />
    // 密匙b会用来做数据完整性验证<br />
    $keyb = md5(substr($key, 16, 16));<br />
    // 密匙c用于变化生成的密文<br />
    $keyc = $ckey_length ? ($operation == &#8216;DECODE&#8217; ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ”;<br />
    // 参与运算的密匙<br />
    $cryptkey = $keya.md5($keya.$keyc);<br />
    $key_length = strlen($cryptkey);<br />
    // 明文，前10位用来保存时间戳，解密时验证数据有效性，10到26位用来保存$keyb(密匙b)，解密时会通过这个密匙验证数据完整性<br />
    // 如果是解码的话，会从第$ckey_length位开始，因为密文前$ckey_length位保存 动态密匙，以保证解密正确<br />
    $string = $operation == &#8216;DECODE&#8217; ? base64_decode(substr($string, $ckey_length)) : sprintf(&#8216;%010d&#8217;, $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;<br />
    $string_length = strlen($string);<br />
    $result = ”;<br />
    $box = range(0, 255);<br />
    $rndkey = array();<br />
    // 产生密匙簿<br />
    for($i = 0; $i &lt;= 255; $i++) {<br />
        $rndkey[$i] = ord($cryptkey[$i % $key_length]);<br />
    }<br />
    // 用固定的算法，打乱密匙簿，增加随机性，好像很复杂，实际上对并不会增加密文的强度<br />
    for($j = $i = 0; $i &lt; 256; $i++) {<br />
        $j = ($j + $box[$i] + $rndkey[$i]) % 256;<br />
        $tmp = $box[$i];<br />
        $box[$i] = $box[$j];<br />
        $box[$j] = $tmp;<br />
    }<br />
    // 核心加解密部分<br />
    for($a = $j = $i = 0; $i &lt; $string_length; $i++) {<br />
        $a = ($a + 1) % 256;<br />
        $j = ($j + $box[$a]) % 256;<br />
        $tmp = $box[$a];<br />
        $box[$a] = $box[$j];<br />
        $box[$j] = $tmp;<br />
        // 从密匙簿得出密匙进行异或，再转成字符<br />
        $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));<br />
    }<br />
    if($operation == &#8216;DECODE&#8217;) {<br />
        // substr($result, 0, 10) == 0 验证数据有效性<br />
        // substr($result, 0, 10) &#8211; time() &gt; 0 验证数据有效性<br />
        // substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16) 验证数据完整性<br />
        // 验证数据有效性，请看未加密明文的格式<br />
        if((substr($result, 0, 10) == 0 || substr($result, 0, 10) &#8211; time() &gt; 0) &amp;&amp; substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {<br />
            return substr($result, 26);<br />
        } else {<br />
            return ”;<br />
        }<br />
    } else {<br />
        // 把动态密匙保存在密文里，这也是为什么同样的明文，生产不同密文后能解密的原因<br />
        // 因为加密后的密文可能是一些特殊字符，复制过程可能会丢失，所以用base64编码<br />
        return $keyc.str_replace(&#8216;=&#8217;, ”, base64_encode($result));<br />
    }<br />
}<br />
echo authcode(“123456&#8243;,”jiami”);<br />
echo “&lt;br&gt;”;<br />
echo authcode(“801dbc/enq3NuSJeAjRWs8eVv099h/OB46xIsCmlVJynWq/3w”);<br />
?&gt;</p>
<p>&nbsp;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.poloo.org/?feed=rss2&#038;p=779</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse 中svn更新的问题</title>
		<link>http://www.poloo.org/?p=775</link>
		<comments>http://www.poloo.org/?p=775#comments</comments>
		<pubDate>Fri, 06 Jan 2012 02:26:23 +0000</pubDate>
		<dc:creator>澜琼</dc:creator>
				<category><![CDATA[Cate]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[更新]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.poloo.org/?p=775</guid>
		<description><![CDATA[SVN更新出现问题： org.apache.subversion.javahl.ClientException: The working copy needs to be upgraded svn: Working copy &#8216;E:\aliyun-spirit\spiritmap0916&#8242; is too old (format 10, created by Subversion 1.6) org.apache.subversion.javahl.ClientException: The working copy needs to be upgraded svn: Working copy &#8216;E:\aliyun-spirit\spiritmap0916&#8242; is too old (format 10, created by Subversion 1.6) 原因是我在svn是低版本时候checkout的项目 之后 我进行了升级了svn版本 然后 我再更新项目就出现如上问题 解决办法：对项目进行upgrade 如图：]]></description>
			<content:encoded><![CDATA[<p>SVN更新出现问题：</p>
<p>org.apache.subversion.javahl.ClientException: The working copy needs to be upgraded<br />
svn: Working copy &#8216;E:\aliyun-spirit\spiritmap0916&#8242; is too old (format 10, created by Subversion 1.6)</p>
<p>org.apache.subversion.javahl.ClientException: The working copy needs to be upgraded<br />
svn: Working copy &#8216;E:\aliyun-spirit\spiritmap0916&#8242; is too old (format 10, created by Subversion 1.6)</p>
<p><span id="more-775"></span></p>
<p>原因是我在svn是低版本时候checkout的项目 之后 我进行了升级了svn版本 然后 我再更新项目就出现如上问题</p>
<p>解决办法：对项目进行upgrade 如图：</p>
<p><a href="http://www.poloo.org/uploads//2012/01/0_1320371437HVhV.gif.jpg"><img class="alignnone size-medium wp-image-776" title="0_1320371437HVhV.gif" src="http://www.poloo.org/uploads//2012/01/0_1320371437HVhV.gif-278x300.jpg" alt="" width="278" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.poloo.org/?feed=rss2&#038;p=775</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>火狐firefox,IE,网站变灰变黑兼容代码</title>
		<link>http://www.poloo.org/?p=770</link>
		<comments>http://www.poloo.org/?p=770#comments</comments>
		<pubDate>Thu, 29 Dec 2011 01:50:35 +0000</pubDate>
		<dc:creator>澜琼</dc:creator>
				<category><![CDATA[Dream]]></category>
		<category><![CDATA[样式]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[火狐]]></category>
		<category><![CDATA[灰色]]></category>

		<guid isPermaLink="false">http://www.poloo.org/?p=770</guid>
		<description><![CDATA[大家都知道在IE浏览器中，可以使用一段代码 body {filter: gray;} 用微软的滤镜代码将网站整体去色成为黑白灰色调效果，但是并不兼容firefox等其他非IE浏览器。 CSS网站灰色调 (只支持IE) 行内样式： elem.style.filter = &#8216;progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)&#8217;; css样式表： elem { filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);              /* Element must “hasLayout”! */              zoom: 1;}   现在分享一个能兼容其他非IE浏览器的变色效果（使用JavaScript实现） 经测试兼容Opera 9, FF2/3, Safari 4, IE6/7 网站整体灰色调（兼容firefox等非IE浏览器）   下载JS，然后引用到网站页面代码上，JS下载地址：点击下载 主要函数：grayscale()，他可以使用很多种方法调用： 使用： // 方法一 var el = document.getElementById( &#8216;myEl&#8217; ); grayscale( el ); // 方法二 grayscale( document.getElementsByTagName(&#8216;div&#8217;) ); // jquery中使用: [...]]]></description>
			<content:encoded><![CDATA[<p align="left">大家都知道在IE浏览器中，可以使用一段代码 body {filter: gray;} 用微软的滤镜代码将网站整体去色成为黑白灰色调效果，但是并不兼容firefox等其他非IE浏览器。</p>
<p align="left">CSS网站灰色调 (只支持IE)</p>
<p align="left">行内样式：</p>
<p align="left">elem.style.filter = &#8216;progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)&#8217;;</p>
<p align="left">css样式表：</p>
<p align="left">elem { filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);</p>
<p align="left">             /* Element must “hasLayout”! */</p>
<p align="left">             zoom: 1;}</p>
<p align="left"> <span id="more-770"></span></p>
<p align="left">现在分享一个能兼容其他非IE浏览器的变色效果（使用JavaScript实现）<br />
经测试兼容Opera 9, FF2/3, Safari 4, IE6/7</p>
<p align="left"><strong>网站整体灰色调（兼容firefox等非IE浏览器）</strong></p>
<p align="left"> <img class="alignnone size-medium wp-image-771" title="clip_image001" src="http://www.poloo.org/uploads//2011/12/clip_image001-300x234.gif" alt="" width="300" height="234" /></p>
<p align="left">下载JS，然后引用到网站页面代码上，JS下载地址：<a href="http://james.padolsey.com/demos/grayscale/grayscale.js" target="_blank">点击下载</a></p>
<p align="left">主要函数：grayscale()，他可以使用很多种方法调用：</p>
<p align="left">使用：</p>
<p align="left">// 方法一</p>
<p align="left">var el = document.getElementById( &#8216;myEl&#8217; );</p>
<p align="left">grayscale( el );</p>
<p align="left">// 方法二</p>
<p align="left">grayscale( document.getElementsByTagName(&#8216;div&#8217;) );</p>
<p align="left">// jquery中使用:</p>
<p align="left">grayscale( $(&#8216;div&#8217;) );</p>
<p align="left">重置：</p>
<p align="left">grayscale.reset( el );</p>
<p align="left">// 同样，重置方法也可用于jquery</p>
<p align="left">grayscale.reset( $(&#8216;div&#8217;) );</p>
<p align="left">预处理：</p>
<p align="left">grayscale.prepare( document.getElementById(&#8216;myEl&#8217;) );</p>
<p align="left">// jquery中也可使用</p>
<p align="left">grayscale.prepare( $(&#8216;.gall_img&#8217;) );</p>
<p align="left">要使整个网站变灰：</p>
<p>html{filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}</p>
<p>/*html{filter:gray;} */</p>
<p>PS:</p>
<p>原文地址：<a href="http://james.padolsey.com/javascript/grayscaling-in-non-ie-browsers/">http://james.padolsey.com/javascript/grayscaling-in-non-ie-browsers/</a></p>
<p>演示地址：<a href="http://james.padolsey.com/demos/grayscale/">http://james.padolsey.com/demos/grayscale/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.poloo.org/?feed=rss2&#038;p=770</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>网站加速 美工和前端开发人员也很关键</title>
		<link>http://www.poloo.org/?p=766</link>
		<comments>http://www.poloo.org/?p=766#comments</comments>
		<pubDate>Sat, 17 Dec 2011 08:00:25 +0000</pubDate>
		<dc:creator>澜琼</dc:creator>
				<category><![CDATA[Dream]]></category>
		<category><![CDATA[性能]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[网站]]></category>
		<category><![CDATA[美工]]></category>

		<guid isPermaLink="false">http://www.poloo.org/?p=766</guid>
		<description><![CDATA[一般而言，关于网站加速，大部分人认为是后端开发者和系统管理的职责。这种观点不完全正确，因为一个高性能的网站，不仅取决于网站的后端，还依赖网站的前端，也就是说还依赖于美工和前端开发人员。 事实上，就目前的网络环境来看，我们在浏览正常的网站时，通常总耗费时间的10-20%用在了后端，剩下80-90%的时间被前端所消耗。所以，如果 你计划提升网站的速度，不妨在优化后端的同时，让美工和前端开发人员考虑以下几个方面。相信你可能会感叹，不大动刀戈也可以有效地提升网站的性能。 1. 尽可能减少 HTTP 请求的次数。 例如：用一张图片代替多张图片，再用CSS显示。 2. 采用CDN对网站加速。 CDN可以在不改动原有网站架构的前提下，很大幅度地提升网站的访问速度。特别是对于那些拥有全国(或世界各地)用户的网站，效果会更加明显。 3. CSS文件放在页面头部。 浏览器在显示页面之前，必须要得到CSS。否则无法显示网页。所以，将CSS文件 放在页面头部是明智之举。伯乐在线的开发团队曾经做过测试，如果一张网页包括多个JS文件，同时CSS文件放在网页最后。用户浏览网页时，非常明显地感觉 到网页先是空白(下载JS和其他文件)，然后再显示出来。 显然，这种情况下，用户体验是非常差的。与此相反，如果将CSS文件放在页面头部，用户浏览网页 时，可以先看到网页 (网页无明显空白)。 4. JS文件放在页面尾部。 道理和CSS文件放在页面头部一样。 5. 将CSS和JS代码单独存放在独立于网页的文件中。 现在很多的浏览器，如Firefox， IE 7，8 等等都会将图片，CSS，JS等外部的文件缓存在用户本地，所以，用户通过这些浏览器浏览网页时只传输网页的文本内容，不再次下载图片，CSS，JS等外 部的文件。这样一来，访问的速度自然可以提升不少。另外，将CSS和JS代码单独存放在独立于网页的文件，也便于管理。 6. 对JS“瘦身”。 用第三方的工具(不需要手工)对JS进行压缩，包括删除注释，空格等等，通常情况下可以减小20%左右。例如，未“瘦身”前JS为100KB， “瘦身”后80KB. 除第2项外，其他5个方面都是和美工和前端开发人员相关。]]></description>
			<content:encoded><![CDATA[<p>一般而言，关于网站加速，大部分人认为是后端开发者和系统管理的职责。这种观点不完全正确，因为一个高性能的网站，不仅取决于网站的后端，还依赖网站的前端，也就是说还依赖于美工和前端开发人员。</p>
<p>事实上，就目前的网络环境来看，我们在浏览正常的网站时，通常总耗费时间的10-20%用在了后端，剩下80-90%的时间被前端所消耗。所以，如果 你计划提升网站的速度，不妨在优化后端的同时，让美工和前端开发人员考虑以下几个方面。相信你可能会感叹，不大动刀戈也可以有效地提升网站的性能。<br />
<span id="more-766"></span><br />
1. 尽可能减少 HTTP 请求的次数。</p>
<p>例如：用一张图片代替多张图片，再用CSS显示。</p>
<p>2. 采用CDN对网站加速。</p>
<p>CDN可以在不改动原有网站架构的前提下，很大幅度地提升网站的访问速度。特别是对于那些拥有全国(或世界各地)用户的网站，效果会更加明显。</p>
<p>3. CSS文件放在页面头部。</p>
<p>浏览器在显示页面之前，必须要得到CSS。否则无法显示网页。所以，将CSS文件 放在页面头部是明智之举。伯乐在线的开发团队曾经做过测试，如果一张网页包括多个JS文件，同时CSS文件放在网页最后。用户浏览网页时，非常明显地感觉 到网页先是空白(下载JS和其他文件)，然后再显示出来。</p>
<p>显然，这种情况下，用户体验是非常差的。与此相反，如果将CSS文件放在页面头部，用户浏览网页 时，可以先看到网页 (网页无明显空白)。</p>
<p>4. JS文件放在页面尾部。</p>
<p>道理和CSS文件放在页面头部一样。</p>
<p>5. 将CSS和JS代码单独存放在独立于网页的文件中。</p>
<p>现在很多的浏览器，如Firefox， IE 7，8 等等都会将图片，CSS，JS等外部的文件缓存在用户本地，所以，用户通过这些浏览器浏览网页时只传输网页的文本内容，不再次下载图片，CSS，JS等外 部的文件。这样一来，访问的速度自然可以提升不少。另外，将CSS和JS代码单独存放在独立于网页的文件，也便于管理。</p>
<p>6. 对JS“瘦身”。</p>
<p>用第三方的工具(不需要手工)对JS进行压缩，包括删除注释，空格等等，通常情况下可以减小20%左右。例如，未“瘦身”前JS为100KB， “瘦身”后80KB.</p>
<p>除第2项外，其他5个方面都是和美工和前端开发人员相关。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.poloo.org/?feed=rss2&#038;p=766</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

