<?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>Movoin Studio &#187; PHP</title>
	<atom:link href="http://www.movoin.com/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.movoin.com</link>
	<description>专注Web开发, Python和Php技术 &#38;&#38; 关注开源及移动应用</description>
	<lastBuildDate>Wed, 14 Dec 2011 04:02:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>PHP抓取天气预报</title>
		<link>http://www.movoin.com/php-weather-class.html</link>
		<comments>http://www.movoin.com/php-weather-class.html#comments</comments>
		<pubDate>Fri, 06 May 2011 07:58:26 +0000</pubDate>
		<dc:creator>Allen</dc:creator>
				<category><![CDATA[程序开发]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[爬虫]]></category>

		<guid isPermaLink="false">http://www.movoin.com/?p=89</guid>
		<description><![CDATA[最近遇到个项目，客户非要加个天气预报功能，还提出要求最少显示三天。到网上找了很多挂件都无法找到满足要求的，这可让老夫如何是好~~~于是乎被逼无耐下，自己写了这个抓取类。 主要功能只是将所须省市的七天的天气抓取下来，目前我这个项目中应用了缓存，但因为是FLEA的缓存机制，所以把代码贴出来对不使用FLEA的同学完全没有帮助，所以就省了点代码。 关于缓存方面，我个人比较倾向于按你读取的天数来确定缓存时间，比如：你一次只显示今天和明天的，那抓取来的七天数据就可以使用六次，直到七天数据用完的时候才需要重新抓取。 如图： 这样处理缓存我个人觉得比较划算，呵呵。 [PS]: 贴代码是个辛苦活，记得以前有些几个网站是可以分享代码片段的，但忘了名字，有同学愿意告诉一下我吗？ 先上源码： &#60;?php class Model_Weather { private $_server = 'http://qq.ip138.com'; private $_ext = '.htm'; private $_province; private $_city; function __construct($province='guangdong', $city='zhongshan') { $this-&#62;_province = $province; $this-&#62;_city = $city; } function setServer($server) { $this-&#62;_server = $server; } function setProvince($province) { $this-&#62;_province = $province; } function setCity($city) { $this-&#62;_city = $city; [...]]]></description>
			<content:encoded><![CDATA[<p>最近遇到个项目，客户非要加个天气预报功能，还提出要求最少显示三天。到网上找了很多挂件都无法找到满足要求的，这可让老夫如何是好~~~于是乎被逼无耐下，自己写了这个抓取类。</p>
<p>主要功能只是将所须省市的七天的天气抓取下来，目前我这个项目中应用了缓存，但因为是FLEA的缓存机制，所以把代码贴出来对不使用FLEA的同学完全没有帮助，所以就省了点代码。</p>
<p>关于缓存方面，我个人比较倾向于按你读取的天数来确定缓存时间，比如：你一次只显示今天和明天的，那抓取来的七天数据就可以使用六次，直到七天数据用完的时候才需要重新抓取。</p>
<p>如图：<a href="http://www.movoin.com/wp-content/uploads/2011/05/cache.jpg"><img src="http://www.movoin.com/wp-content/uploads/2011/05/cache-300x125.jpg" alt="cache 300x125 PHP抓取天气预报" title="PHP抓取天气预报" width="300" height="125" class="alignnone size-medium wp-image-90" /></a></p>
<p>这样处理缓存我个人觉得比较划算，呵呵。</p>
<p>[PS]: <strong>贴代码是个辛苦活，记得以前有些几个网站是可以分享代码片段的，但忘了名字，有同学愿意告诉一下我吗？</strong></p>
<p><span id="more-89"></span><br />
<strong>先上源码：</strong></p>
<pre name="code" class="sh_php" linenum="off">&lt;?php
class Model_Weather
{
    private $_server = 'http://qq.ip138.com';
    private $_ext = '.htm';
    private $_province;
    private $_city;

    function __construct($province='guangdong', $city='zhongshan')
    {
        $this-&gt;_province = $province;
        $this-&gt;_city = $city;
    }

    function setServer($server)
    {
        $this-&gt;_server = $server;
    }

    function setProvince($province)
    {
        $this-&gt;_province = $province;
    }

    function setCity($city)
    {
        $this-&gt;_city = $city;
    }

    function setExt($ext)
    {
        $this-&gt;_ext = $ext;
    }

    function getPageLink()
    {
        return $this-&gt;_server . '/weather/' .
               $this-&gt;_province . '/' .
               $this-&gt;_city .
               $this-&gt;_ext;
    }

    function getIconLink($icon)
    {
        return $this-&gt;_server . $icon;
    }

    // 最好是使用缓存，不然比较废时。
    function fetch($display = 3)
    {
        $weather = $this-&gt;_fetch();

        for ($i=0; $i&lt;$display; $i++)
        {
            $return[] = $weather[$i];
        }

        return $return;
    }

    function _fetch()
    {
        $content = $this-&gt;fopen_url($this-&gt;getPageLink());
        $match = $this-&gt;find(&quot;&lt;table width=\&quot;700\&quot; borderColorDark=\&quot;#ffffff\&quot; borderColorLight=\&quot;#008000\&quot; border=\&quot;1\&quot; cellspacing=\&quot;0\&quot; cellpadding=\&quot;1\&quot; align=\&quot;center\&quot;&quot;, &quot;table&gt;&quot;, $content);

        $table = $this-&gt;findAll(&quot;&lt;tr&quot;, &quot;tr&gt;&quot;, $match);

        $dates = $this-&gt;getDate($table[0]);
        $icons = $this-&gt;getIcons($table[1]);
        $temperatures = $this-&gt;getTemperature($table[2]);

        foreach ($dates as $i =&gt; $date)
        {
            $return[$i] = array(
                'date' =&gt; explode(' ', $date),
                'icons' =&gt; $icons[$i],
                'temperature' =&gt; $temperatures[$i],
            );
        }

        return $return;
    }

    // 日期
    function getDate($table)
    {
        $dates = $this-&gt;findAll(&quot;&lt;th class=\&quot;tdc1\&quot; style=\&quot;white-space:nowrap;\&quot;&quot;, &quot;td&gt;&quot;, $table);
        return array_map('strip_tags', $dates);
    }

    // 天气图标及文字
    function getIcons($table)
    {
        $tds = $this-&gt;findAll(&quot;&lt;td&quot;, &quot;td&gt;&quot;, $table);

        array_shift($tds);
        foreach ($tds as $i =&gt; $td)
        {
            $t = explode('&lt;br/&gt;', $td);
            $r1 = &quot;/src=\&quot;(.*?)\&quot;/is&quot;;
            preg_match_all($r1, $t[0], $icons);
            $icon = array_map(array($this, 'getIconLink'), $icons[1]);
            $rows[$i] = array(
                'text' =&gt; strip_tags($t[1]),
                'images' =&gt; $icon
            );
        }

        return $rows;
    }

    // 气温
    function getTemperature($table)
    {
        $dates = $this-&gt;findAll(&quot;&lt;td&quot;, &quot;td&gt;&quot;, $table);
        array_shift($dates);
        return array_map('strip_tags', $dates);
    }

    function find($begin, $end, $content)
    {
        $match = '';
        $r = &quot;/{$begin}(.*?){$end}/is&quot;;
        preg_match($r, $content, $match);

        return $match[0];
    }

    function findAll($begin, $end, $content)
    {
        $matchs = '';
        $r = &quot;/{$begin}(.*?){$end}/is&quot;;
        preg_match_all($r, $content, $matchs);

        return $matchs[0];
    }

    function fopen_url($url)
    {
        if (function_exists('file_get_contents')) {
            $file_content = @file_get_contents($url);
        } elseif (ini_get('allow_url_fopen') &amp;&amp; ($file = @fopen($url, 'rb'))) {
            $i = 0;
            while (!feof($file) &amp;&amp; $i++ &lt; 1000) {
                $file_content .= strtolower(fread($file, 4096));
            }
            fclose($file);
        } elseif (function_exists('curl_init')) {
            $curl_handle = curl_init();
            curl_setopt($curl_handle, CURLOPT_URL, $url);
            curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT,2);
            curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER,1);
            curl_setopt($curl_handle, CURLOPT_FAILONERROR,1);
            curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Trackback Spam Check'); //引用垃圾邮件检查
            $file_content = curl_exec($curl_handle);
            curl_close($curl_handle);
        } else {
            $file_content = '';
        }
        return iconv(&quot;gb2312&quot;, &quot;utf-8&quot;,$file_content);
    }

}
?&gt;</pre>
<p><strong>返回数据结构：</strong></p>
<pre name="code" class="sh_php" linenum="off">Array
(
    [0] => Array
        (
            [date] => Array
                (
                    [0] => 2011-5-6
                    [1] => 星期五
                )
            [icons] => Array
                (
                    [text] => 阴
                    [images] => Array
                        (
                            [0] => http://qq.ip138.com/image/b2.gif
                        )
                )
            [temperature] => 27℃～22℃
        )
    [1] => Array
        (
            [date] => Array
                (
                    [0] => 2011-5-7
                    [1] => 星期六
                )
            [icons] => Array
                (
                    [text] => 多云
                    [images] => Array
                        (
                            [0] => http://qq.ip138.com/image/b1.gif
                        )
                )
            [temperature] => 29℃～22℃
        )
    [2] => Array
        (
            [date] => Array
                (
                    [0] => 2011-5-8
                    [1] => 星期日
                )
            [icons] => Array
                (
                    [text] => 多云
                    [images] => Array
                        (
                            [0] => http://qq.ip138.com/image/b1.gif
                        )
                )
            [temperature] => 30℃～23℃
        )
    [3] => Array
        (
            [date] => Array
                (
                    [0] => 2011-5-9
                    [1] => 星期一
                )
            [icons] => Array
                (
                    [text] => 阵雨
                    [images] => Array
                        (
                            [0] => http://qq.ip138.com/image/b3.gif
                        )
                )
            [temperature] => 29℃～21℃
        )
    [4] => Array
        (
            [date] => Array
                (
                    [0] => 2011-5-10
                    [1] => 星期二
                )
            [icons] => Array
                (
                    [text] => 阵雨转多云
                    [images] => Array
                        (
                            [0] => http://qq.ip138.com/image/b3.gif
                            [1] => http://qq.ip138.com/image/b1.gif
                        )
                )
            [temperature] => 27℃～21℃
        )
    [5] => Array
        (
            [date] => Array
                (
                    [0] => 2011-5-11
                    [1] => 星期三
                )
            [icons] => Array
                (
                    [text] => 多云
                    [images] => Array
                        (
                            [0] => http://qq.ip138.com/image/b1.gif
                        )
                )
            [temperature] => 28℃～21℃
        )
    [6] => Array
        (
            [date] => Array
                (
                    [0] => 2011-5-12
                    [1] => 星期四
                )
            [icons] => Array
                (
                    [text] => 多云
                    [images] => Array
                        (
                            [0] => http://qq.ip138.com/image/b1.gif
                        )
                )
            [temperature] => 28℃
        )
)</pre>
<script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_php.js"></script><script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_php.js"></script><h3  class="related_post_title">既然来了，也许你也会想看一下：</h3><ul class="related_post"><li>2011/03/23 -- <a href="http://www.movoin.com/yii-framework-source-code-to-read-notes-1.html" title="Yii Framework 源码阅读笔记(述)">Yii Framework 源码阅读笔记(述)</a></li><li>2011/01/18 -- <a href="http://www.movoin.com/python-devel-spider.html" title="Python编写蜘蛛/爬虫">Python编写蜘蛛/爬虫</a></li><li>2010/12/09 -- <a href="http://www.movoin.com/fleaphp-in-php5-3.html" title="FLEAPHP运行在PHP5.3+上的报错的解决办法">FLEAPHP运行在PHP5.3+上的报错的解决办法</a></li><li>2010/11/24 -- <a href="http://www.movoin.com/my-confusion.html" title="我最近的困惑">我最近的困惑</a></li><li>2010/08/20 -- <a href="http://www.movoin.com/ckeditor-and-ckfinder-tips.html" title="CKEditor + CKFinder 整合笔记">CKEditor + CKFinder 整合笔记</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.movoin.com/php-weather-class.html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Yii Framework 源码阅读笔记(述)</title>
		<link>http://www.movoin.com/yii-framework-source-code-to-read-notes-1.html</link>
		<comments>http://www.movoin.com/yii-framework-source-code-to-read-notes-1.html#comments</comments>
		<pubDate>Wed, 23 Mar 2011 08:58:39 +0000</pubDate>
		<dc:creator>Allen</dc:creator>
				<category><![CDATA[程序开发]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Yii]]></category>
		<category><![CDATA[框架]]></category>

		<guid isPermaLink="false">http://www.movoin.com/?p=87</guid>
		<description><![CDATA[做PHP也蛮多年了，一直对国产各类系统、平台的二次开发不太感冒，主要都在研究一些框架自制系统、开放平台等。 学习过CakePHP、CI、FleaPHP、QeePHP、ThinkPHP及Zend Framework，有些只是浅尝即止——指遇到一丁点不爽就放弃这个框架。 1. CI不用说，太简单了，框架风格让我不爽，虽然我也信奉&#8221;Simple is better&#8221;，但是也不等于可以&#8221;升级&#8221;成&#8221;Simple is Simple&#8221;吧，我需要较强的定制性，而不是在你的XXOO里打混。 2. CakePHP很帅气，也很好用，但由于种种原因没有继续尝试。 3. FleaPHP是我用的最久的一套框架，直到我用到需要修改框架源码才放弃。 4. QeePHP是我觉得比较杯具的一套框架，瘳老板在开始时说的噼里啪啦的，可到执行时就扑哧扑哧没下文了。对它最不满的是文档，也不喜欢其社区的氛围，可能是什么样的老大会培养出什么样的小弟吧，瘳老板没事就在phpchina上和ThinkPHP的谁谁谁干上几场。所以社区里的小弟们也一个个的在各种条件下讨论哪个框架更好，真是没完没了。 5. ThinkPHP只是看过文档及小部分源码，不喜欢这种方式来编程，不再言语了。 6. Zend Framework，很牛叉即使你不使用它也能够从分析其源码中得到非常大的收获，是一个PHP5的标准源码示例库，但要用它嘛~~~我要再考虑考虑，我一个项目加上所有文件不过2M，你的框架就XXOO，太乳酸了~~~ OK，放屁到此结束！ 其实尝试过的框架已经不记得有多少了，也不是一两百字就可以带过的，上面的就是个意思，全当放屁就行了，下面的才是正文。 知道Yii还是在Qeephp的社区，那时的我正在热切的期盼着QeePHP的诞生，在这个过程中老瘳突然做起了调查，主要是问大家喜欢什么样的文档手册，并给出了参考，参考的就是YiiFramework，真是无语。 开始时我也只是把注意力放在它的文档上，连跑个Demo都没试过。现在回想起来是多么的不应该呀，为了一团浮云而错过了驾驭一匹神马的机会。直到近期才抽时间去看源码，世界立即完全不同了。 Yii的文档做得很不错，但我觉得还是不够详尽，想要更好的学习还是要从源码开始。但了解框架的结构还是足够了，想要更深入的学习框架本身则需要读懂它的源码。 接下来就是动手(动眼)阅读代码了&#8230; {EOF} 既然来了，也许你也会想看一下：2010/12/09 -- FLEAPHP运行在PHP5.3+上的报错的解决办法2011/05/06 -- PHP抓取天气预报2010/11/24 -- 我最近的困惑2010/10/18 -- 手机应用的HTML5 JavaScript框架2010/09/07 -- 10款基于Html的移动应用开发框架2010/08/20 -- CKEditor + CKFinder 整合笔记]]></description>
			<content:encoded><![CDATA[<p>做PHP也蛮多年了，一直对国产各类系统、平台的二次开发不太感冒，主要都在研究一些框架自制系统、开放平台等。</p>
<p>学习过CakePHP、CI、FleaPHP、QeePHP、ThinkPHP及Zend Framework，有些只是浅尝即止——指遇到一丁点不爽就放弃这个框架。</p>
<p>1. CI不用说，太简单了，框架风格让我不爽，虽然我也信奉&#8221;Simple is better&#8221;，但是也不等于可以&#8221;升级&#8221;成&#8221;Simple is Simple&#8221;吧，我需要较强的定制性，而不是在你的XXOO里打混。<br />
2. CakePHP很帅气，也很好用，但由于种种原因没有继续尝试。<br />
3. FleaPHP是我用的最久的一套框架，直到我用到需要修改框架源码才放弃。<br />
4. QeePHP是我觉得比较杯具的一套框架，瘳老板在开始时说的噼里啪啦的，可到执行时就扑哧扑哧没下文了。对它最不满的是文档，也不喜欢其社区的氛围，可能是什么样的老大会培养出什么样的小弟吧，瘳老板没事就在phpchina上和ThinkPHP的谁谁谁干上几场。所以社区里的小弟们也一个个的在各种条件下讨论哪个框架更好，真是没完没了。<br />
5. ThinkPHP只是看过文档及小部分源码，不喜欢这种方式来编程，不再言语了。<br />
6. Zend Framework，很牛叉即使你不使用它也能够从分析其源码中得到非常大的收获，是一个PHP5的标准源码示例库，但要用它嘛~~~我要再考虑考虑，我一个项目加上所有文件不过2M，你的框架就XXOO，太乳酸了~~~</p>
<p>OK，放屁到此结束！</p>
<p>其实尝试过的框架已经不记得有多少了，也不是一两百字就可以带过的，上面的就是个意思，全当放屁就行了，下面的才是正文。</p>
<p>知道Yii还是在Qeephp的社区，那时的我正在热切的期盼着QeePHP的诞生，在这个过程中老瘳突然做起了调查，主要是问大家喜欢什么样的文档手册，并给出了参考，参考的就是YiiFramework，真是无语。</p>
<p>开始时我也只是把注意力放在它的文档上，连跑个Demo都没试过。现在回想起来是多么的不应该呀，为了一团浮云而错过了驾驭一匹神马的机会。直到近期才抽时间去看源码，世界立即完全不同了。</p>
<p>Yii的文档做得很不错，但我觉得还是不够详尽，想要更好的学习还是要从源码开始。但了解框架的结构还是足够了，想要更深入的学习框架本身则需要读懂它的源码。</p>
<p>接下来就是动手(动眼)阅读代码了&#8230;</p>
<p>{EOF}</p>
<h3  class="related_post_title">既然来了，也许你也会想看一下：</h3><ul class="related_post"><li>2010/12/09 -- <a href="http://www.movoin.com/fleaphp-in-php5-3.html" title="FLEAPHP运行在PHP5.3+上的报错的解决办法">FLEAPHP运行在PHP5.3+上的报错的解决办法</a></li><li>2011/05/06 -- <a href="http://www.movoin.com/php-weather-class.html" title="PHP抓取天气预报">PHP抓取天气预报</a></li><li>2010/11/24 -- <a href="http://www.movoin.com/my-confusion.html" title="我最近的困惑">我最近的困惑</a></li><li>2010/10/18 -- <a href="http://www.movoin.com/html5-javascript-framework-for-mobile-applications.html" title="手机应用的HTML5 JavaScript框架">手机应用的HTML5 JavaScript框架</a></li><li>2010/09/07 -- <a href="http://www.movoin.com/10-useful-frameworks-to-develop-html-based-webapps-for-touch-devices.html" title="10款基于Html的移动应用开发框架">10款基于Html的移动应用开发框架</a></li><li>2010/08/20 -- <a href="http://www.movoin.com/ckeditor-and-ckfinder-tips.html" title="CKEditor + CKFinder 整合笔记">CKEditor + CKFinder 整合笔记</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.movoin.com/yii-framework-source-code-to-read-notes-1.html/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>FLEAPHP运行在PHP5.3+上的报错的解决办法</title>
		<link>http://www.movoin.com/fleaphp-in-php5-3.html</link>
		<comments>http://www.movoin.com/fleaphp-in-php5-3.html#comments</comments>
		<pubDate>Thu, 09 Dec 2010 08:08:42 +0000</pubDate>
		<dc:creator>Allen</dc:creator>
				<category><![CDATA[程序开发]]></category>
		<category><![CDATA[FLEAPHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[框架]]></category>

		<guid isPermaLink="false">http://www.movoin.com/?p=61</guid>
		<description><![CDATA[(注：本文所提到的解决办法只针对FLEAPHP本身。) 最常见的两个提示信息是： 1. Assigning the return value of new by reference is deprecated. 2. Function set_magic_quotes_runtime() is deprecated. 3. Notice: date_default_timezone_set() [function.date-default-timezone-set]: Timezone ID &#8216;Asia/ShangHai&#8217; is invalid in YOUR FLEA.PHP on line 834. 其实意思都差不多，就是某某方法或函数已经被废弃不再使用了。所以解决办法也很简单，那我就不用呗！呵呵。 解决第一个提示信息： 第一个提示信息是由于FLEA使用了大量的引用&#8221;=&#038;&#8221;，而这种方法已经被PHP5.3废弃了，因为默认已经是引用不是复制。如果想要复制则需要像这样：“$a = clone $b;”，详细请移步：http://php.net/manual/en/language.oop5.cloning.php 解决办法：用你的IDE或者是批量替换软件把所有文件的所有&#8221;=&#038;&#8221;替换为&#8221;=&#8221;就可以了。 解决第二个提示信息： 第二个提示信息是由于FLEA.php这个文件的887行，有个 set_magic_quotes_runtime(0); 它也被5.3废弃了，你可以选择直接去掉它，也可以像我这样： if (substr(PHP_VERSION, 2, 1) !== &#8217;3&#8242;) { set_magic_quotes_runtime(0); } 第三个提示信息其实明眼上看不出来，但是当我输出一个echo date_default_timezone_get [...]]]></description>
			<content:encoded><![CDATA[<p>(注：本文所提到的解决办法只针对FLEAPHP本身。)</p>
<p>最常见的两个提示信息是：</p>
<p>1. Assigning the return value of new by reference is deprecated.</p>
<p>2. Function set_magic_quotes_runtime() is deprecated.</p>
<p>3. Notice: date_default_timezone_set() [function.date-default-timezone-set]: Timezone ID &#8216;Asia/ShangHai&#8217; is invalid in YOUR FLEA.PHP on line 834.</p>
<p>其实意思都差不多，就是某某方法或函数已经被废弃不再使用了。所以解决办法也很简单，那我就不用呗！呵呵。<br />
<span id="more-61"></span><br />
解决第一个提示信息：</p>
<p>第一个提示信息是由于FLEA使用了大量的引用&#8221;=&#038;&#8221;，而这种方法已经被PHP5.3废弃了，因为默认已经是引用不是复制。如果想要复制则需要像这样：“$a = clone $b;”，详细请移步：http://php.net/manual/en/language.oop5.cloning.php</p>
<p>解决办法：用你的IDE或者是批量替换软件把所有文件的所有&#8221;=&#038;&#8221;替换为&#8221;=&#8221;就可以了。</p>
<p>解决第二个提示信息：</p>
<p>第二个提示信息是由于FLEA.php这个文件的887行，有个 set_magic_quotes_runtime(0); 它也被5.3废弃了，你可以选择直接去掉它，也可以像我这样：</p>
<p>if (substr(PHP_VERSION, 2, 1) !== &#8217;3&#8242;) {<br />
    set_magic_quotes_runtime(0);<br />
}</p>
<p>第三个提示信息其实明眼上看不出来，但是当我输出一个echo date_default_timezone_get ();的时候你就会发现，Asia/Chongqing与Asia/ShangHai的不同了，是的Shanghai而不是ShangHai，详细请移步：http://cn.php.net/manual/en/timezones.asia.php</p>
<p>OK，这样就搞掂了，其实FLEAPHP还是很不错的~~~</p>
<h3  class="related_post_title">既然来了，也许你也会想看一下：</h3><ul class="related_post"><li>2011/03/23 -- <a href="http://www.movoin.com/yii-framework-source-code-to-read-notes-1.html" title="Yii Framework 源码阅读笔记(述)">Yii Framework 源码阅读笔记(述)</a></li><li>2011/05/06 -- <a href="http://www.movoin.com/php-weather-class.html" title="PHP抓取天气预报">PHP抓取天气预报</a></li><li>2010/11/24 -- <a href="http://www.movoin.com/my-confusion.html" title="我最近的困惑">我最近的困惑</a></li><li>2010/10/18 -- <a href="http://www.movoin.com/html5-javascript-framework-for-mobile-applications.html" title="手机应用的HTML5 JavaScript框架">手机应用的HTML5 JavaScript框架</a></li><li>2010/09/07 -- <a href="http://www.movoin.com/10-useful-frameworks-to-develop-html-based-webapps-for-touch-devices.html" title="10款基于Html的移动应用开发框架">10款基于Html的移动应用开发框架</a></li><li>2010/08/20 -- <a href="http://www.movoin.com/ckeditor-and-ckfinder-tips.html" title="CKEditor + CKFinder 整合笔记">CKEditor + CKFinder 整合笔记</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.movoin.com/fleaphp-in-php5-3.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>我最近的困惑</title>
		<link>http://www.movoin.com/my-confusion.html</link>
		<comments>http://www.movoin.com/my-confusion.html#comments</comments>
		<pubDate>Wed, 24 Nov 2010 09:22:06 +0000</pubDate>
		<dc:creator>Allen</dc:creator>
				<category><![CDATA[日志]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[移动应用]]></category>

		<guid isPermaLink="false">http://www.movoin.com/?p=52</guid>
		<description><![CDATA[近况及前因 最近依然是那么的忙, 忙得连用脑子都懒得用了, 所以有很多事情都得过且过, 放之任之. 我一直想换个智能手机, 因为想做移动应用的开发, 无论是从开发测试角度还是个人需求角度, 拥有一台不咋D的智能机都是必须的. 需求有了, 目标呢? 听说12月中旬魅族要出M9, 配置直逼IP4, 还是用Android2.2, 确实不错, 于是乎开始四处去挖关于Android的信息. 找着找着, 看着看着, 有意思的事情就来了. 先是在新浪微博上看到有人批评Android的图标体系很乱, 什么样的都有, 根本就不利于识别, 建议Android需要做好统一规范; 接着是看到IP4上著名的游戏&#60; &#60;愤怒的小鸟&#62;&#62;的开发团队说, 他们对&#60; &#60;小鸟&#62;&#62;在低端Android平台上的表现很失望, 决定停止对Android平台的开发; 随后, 就是一大堆人开始晒他们自己的低端Android机上的四四方方的小鸟&#8230; 看这些东西, 看太多就会觉得烦, 于是用Pip.io上推看看, tinyfool老板也在为这些事情苦恼, 当然和我的想的就不同, 爷人家是纯种的专家级果粉, 但tinyfool老板总结的苹果优势, 让我有的其他的想法&#8230; 1, 苹果平台非常的统一; 2, Android平台却可以被任何一家厂商深度定制, 使之与原版Android不同; 3, 苹果与Facebook被互联网之父认为是互联网未来的杀手.　因为,　一个限定用户必须使用自己的产品,　否则就降级;　另一个把所有信息全部封锁在自己的内部,　且几乎掌握着其用户的所有隐私. 困惑什么? OK, 我是一个程序员, 有时会做些前端, 但不管我手上的工作是什么, 兼容都是我遇到最大的一个问题. 所以我时常会抱怨, 能不能够只做一个版本就可以, 只在一个平台上工作, 为什么会有那么多的兼容问题. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>近况及前因</strong></p>
<p>最近依然是那么的忙, 忙得连用脑子都懒得用了, 所以有很多事情都得过且过, 放之任之.<br />
我一直想换个智能手机, 因为想做移动应用的开发, 无论是从开发测试角度还是个人需求角度, 拥有一台不咋D的智能机都是必须的.<br />
需求有了, 目标呢? 听说12月中旬魅族要出M9, 配置直逼IP4, 还是用Android2.2, 确实不错, 于是乎开始四处去挖关于Android的信息.<br />
找着找着, 看着看着, 有意思的事情就来了. 先是在新浪微博上看到有人批评Android的图标体系很乱, 什么样的都有, 根本就不利于识别, 建议Android需要做好统一规范; 接着是看到IP4上著名的游戏&lt; &lt;愤怒的小鸟&gt;&gt;的开发团队说, 他们对&lt; &lt;小鸟&gt;&gt;在低端Android平台上的表现很失望, 决定停止对Android平台的开发; 随后, 就是一大堆人开始晒他们自己的低端Android机上的四四方方的小鸟&#8230;<span id="more-52"></span><br />
看这些东西, 看太多就会觉得烦, 于是用Pip.io上推看看, tinyfool老板也在为这些事情苦恼, 当然和我的想的就不同, 爷人家是纯种的专家级果粉, 但tinyfool老板总结的苹果优势, 让我有的其他的想法&#8230;</p>
<blockquote><p>1, 苹果平台非常的统一;<br />
2, Android平台却可以被任何一家厂商深度定制, 使之与原版Android不同;<br />
3, 苹果与Facebook被互联网之父认为是互联网未来的杀手.　因为,　一个限定用户必须使用自己的产品,　否则就降级;　另一个把所有信息全部封锁在自己的内部,　且几乎掌握着其用户的所有隐私.</p></blockquote>
<p><strong>困惑什么?</strong></p>
<p>OK, 我是一个程序员, 有时会做些前端, 但不管我手上的工作是什么, 兼容都是我遇到最大的一个问题. 所以我时常会抱怨, 能不能够只做一个版本就可以, 只在一个平台上工作, 为什么会有那么多的兼容问题.<br />
做前端时, 抱怨IE这么多Bug; 而做开发时, 又要面对WIMP与WAMP及LAMP之间的兼容问题, 当然还有PHP版本的差异, 最让我头痛的是5.3x的PHP, 想想都蛋痛~~~</p>
<p>我即希望所有平台能够统一, 让开发工作真真正正的成为一件很享受的事情. 但另一方面我又会害怕, 害怕统一后会变成现在的腾讯或微软. 最终受苦的还是用户和自己.</p>
<p><strong>发梦中&#8230;</strong></p>
<p>20xx年, 桌面系统是三分天下, Window OS, MacOS, Linux(含各发行版), 任何一款软件在三个平台上都非常容易找到, 而各平台对软件开发商也非常的友好, 在OS版本升级之前, 会协助软件开发商做好准备工作,使得软件可以与系统平台同步上市.<br />
互联网更加的完善, 各国对互联网的法律都非常的完善, 对知识产权的保护也是如此, 没有任何一个国家拖后腿.<br />
浏览器厂商对W3C绝对的信任, 完全愿意接纳W3C标准, 让用户可以浏览到统一的页面渲染, 而且W3C也在不断的完善HTML9和CSS6, 把各厂商自己的创新技术变成新的标准, 将用户的体验不断的推向新的高度.<br />
开发者不再坚持固定的&#8221;开发思想&#8221;, 而是以用户为中心, 以市场法则为主导, 优胜劣汰.<br />
技术一代又一代的更新, 我们可爱的网民变得越来越专业, 互联网成为了每个人生活中所必须的.</p>
<p><strong>上帝, 请让我这个梦成为现实吧~~~</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.movoin.com/my-confusion.html/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>CKEditor + CKFinder 整合笔记</title>
		<link>http://www.movoin.com/ckeditor-and-ckfinder-tips.html</link>
		<comments>http://www.movoin.com/ckeditor-and-ckfinder-tips.html#comments</comments>
		<pubDate>Fri, 20 Aug 2010 07:54:54 +0000</pubDate>
		<dc:creator>Allen</dc:creator>
				<category><![CDATA[技巧整理]]></category>
		<category><![CDATA[CKEditor]]></category>
		<category><![CDATA[CKFinder]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://movoin.com/?p=22</guid>
		<description><![CDATA[FckEdiror是我用的最多的内容编辑器，记得以前和同事谈论FCK的时候，我老是将它说成KFC编辑器，还好没有说成是FUCK编辑器，字母顺序错了可比加一个字母好听多了，呵呵。 新系统不想再用Fck，因为经过对比我发现，CK确实比FCK要快上许多，而且网上也有人说它对长内容的编辑能力也不是FCK能比的。 从ckeditor.com下载最新的CKEditor（PHP版）及CKFinder（PHP版）， 我是把它们都放在同一级目录下。 CK的设置和FCK相差无几，只是CKFinder有点怪异。 CKFinder设置时需要注意的两点： 1，提示： 因为安全原因，文件不可浏览. 请联系系统管理员并检查CKFinder配置文件。 在CKFinder根目录下的config.php中，你所看到的第一个函数，这个函数很神奇，是的，它一开始只是返回false而已，你可以根据你的环境来设置它的返回值，它的注释也写得很清楚了，我就不废话了，多动手比什么都强。 Tips： 如果只是想测试一下，请直接return true; 2, 中文文件上传文件名出现乱码。 哎，不知道到了PHP6后支持Unicode会不会对中文支持的好一点。。。 和修改FCK差不多，直接增加重命名代码即可。 文件位置： ckfinder\core\connector\php\php5\CommandHandler\FileUpload.php /** 找到下面这几行，大约在59-61行左右： */ if ($sFileName != $sUnsafeFileName) { $iErrorNumber = CKFINDER_CONNECTOR_ERROR_UPLOADED_INVALID_NAME_RENAMED; } /** 重命名文件, 以防止中文文件名上传乱码 */ $sExtension=CKFinder_Connector_Utils_FileSystem::getExtension($sFileName); $sFileName = uniqid() . '.' . $sExtension; // 关于 uniqid() 请参考 http://cn.php.net/manual/en/function.uniqid.php 相关链接： CKEditor配置说明： http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html 既然来了，也许你也会想看一下：2011/05/06 -- PHP抓取天气预报2011/03/23 -- [...]]]></description>
			<content:encoded><![CDATA[<p>FckEdiror是我用的最多的内容编辑器，记得以前和同事谈论FCK的时候，我老是将它说成KFC编辑器，还好没有说成是FUCK编辑器，字母顺序错了可比加一个字母好听多了，呵呵。</p>
<p>新系统不想再用Fck，因为经过对比我发现，CK确实比FCK要快上许多，而且网上也有人说它对长内容的编辑能力也不是FCK能比的。</p>
<p>从ckeditor.com下载最新的CKEditor（PHP版）及CKFinder（PHP版）， 我是把它们都放在同一级目录下。<br />
<span id="more-22"></span><br />
CK的设置和FCK相差无几，只是CKFinder有点怪异。</p>
<h3>CKFinder设置时需要注意的两点：</h3>
<p><strong>1，提示： 因为安全原因，文件不可浏览. 请联系系统管理员并检查CKFinder配置文件。</strong></p>
<p>在CKFinder根目录下的config.php中，你所看到的第一个函数，这个函数很神奇，是的，它一开始只是返回false而已，你可以根据你的环境来设置它的返回值，它的注释也写得很清楚了，我就不废话了，多动手比什么都强。<br />
Tips： 如果只是想测试一下，请直接return true;</p>
<p><strong>2, 中文文件上传文件名出现乱码。</strong></p>
<p>哎，不知道到了PHP6后支持Unicode会不会对中文支持的好一点。。。</p>
<p>和修改FCK差不多，直接增加重命名代码即可。</p>
<p><strong>文件位置：</strong> ckfinder\core\connector\php\php5\CommandHandler\FileUpload.php</p>
<pre name="code" class="sh_php" linenum="off">
/** 找到下面这几行，大约在59-61行左右： */
if ($sFileName != $sUnsafeFileName) {
    $iErrorNumber = CKFINDER_CONNECTOR_ERROR_UPLOADED_INVALID_NAME_RENAMED;
}
/** 重命名文件, 以防止中文文件名上传乱码 */
$sExtension=CKFinder_Connector_Utils_FileSystem::getExtension($sFileName);
$sFileName = uniqid() . '.' . $sExtension; // 关于 uniqid() 请参考 http://cn.php.net/manual/en/function.uniqid.php
</pre>
<p>相关链接：</p>
<p>CKEditor配置说明： <a rel="nofollow" href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html" target="_blank" rel="nofollow">http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html</a></p>
<script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_php.js"></script><h3  class="related_post_title">既然来了，也许你也会想看一下：</h3><ul class="related_post"><li>2011/05/06 -- <a href="http://www.movoin.com/php-weather-class.html" title="PHP抓取天气预报">PHP抓取天气预报</a></li><li>2011/03/23 -- <a href="http://www.movoin.com/yii-framework-source-code-to-read-notes-1.html" title="Yii Framework 源码阅读笔记(述)">Yii Framework 源码阅读笔记(述)</a></li><li>2010/12/09 -- <a href="http://www.movoin.com/fleaphp-in-php5-3.html" title="FLEAPHP运行在PHP5.3+上的报错的解决办法">FLEAPHP运行在PHP5.3+上的报错的解决办法</a></li><li>2010/11/24 -- <a href="http://www.movoin.com/my-confusion.html" title="我最近的困惑">我最近的困惑</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.movoin.com/ckeditor-and-ckfinder-tips.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

