<?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>I&#039;m Sroan &#187; 程序设计</title>
	<atom:link href="http://www.sroan.com/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sroan.com</link>
	<description>There&#039;s only one Sroan in the world!</description>
	<lastBuildDate>Wed, 08 Feb 2012 17:05:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>对于UTF-8、gb2321、GBK一些区别的认识</title>
		<link>http://www.sroan.com/1942.html</link>
		<comments>http://www.sroan.com/1942.html#comments</comments>
		<pubDate>Thu, 08 Dec 2011 13:06:04 +0000</pubDate>
		<dc:creator>Sroan</dc:creator>
				<category><![CDATA[程序设计]]></category>

		<guid isPermaLink="false">http://www.sroan.com/?p=1942</guid>
		<description><![CDATA[首先如果是中文网站不太推荐UTF-8，理由是UTF-8对中文支持不好，举个例子就是你在记事本里只输入私募两个字，保存后重新打开，你会看到什么？没错，乱码！ 当然UTF-8也有UTF-8的好处，比如使用AJAX的时候默认都是UTF-8，这样就不需要转码了。 再者，gb2321和GBK，GBK对汉字的支持比gb2321要好很多，gb2321对于很多偏僻的汉字都不支持。比如琩、晿等，但是GBK全部都是支持的。 此外进行str_replace函数进行替换的时候使用GBK编码的话会，有时替换后会出现乱码，必须要先转换为UTF-8进行替换后在转换为GBK。当然如果一个字符串里面的汉子有简体又有繁体，那替换起来更麻烦。、 从上所述，如果你不介意某些汉字以乱码出现，那用UTF-8，你不怕麻烦那就用GBK。]]></description>
			<content:encoded><![CDATA[<p>首先如果是中文网站不太推荐UTF-8，理由是UTF-8对中文支持不好，举个例子就是你在记事本里只输入私募两个字，保存后重新打开，你会看到什么？没错，乱码！</p>
<p>当然UTF-8也有UTF-8的好处，比如使用AJAX的时候默认都是UTF-8，这样就不需要转码了。</p>
<p>再者，gb2321和GBK，GBK对汉字的支持比gb2321要好很多，gb2321对于很多偏僻的汉字都不支持。比如琩、晿等，但是GBK全部都是支持的。</p>
<p>此外进行str_replace函数进行替换的时候使用GBK编码的话会，有时替换后会出现乱码，必须要先转换为UTF-8进行替换后在转换为GBK。当然如果一个字符串里面的汉子有简体又有繁体，那替换起来更麻烦。、</p>
<p>从上所述，如果你不介意某些汉字以乱码出现，那用UTF-8，你不怕麻烦那就用GBK。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sroan.com/1942.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>将多选题的选项记录在数据库的一个字段中</title>
		<link>http://www.sroan.com/1925.html</link>
		<comments>http://www.sroan.com/1925.html#comments</comments>
		<pubDate>Sun, 06 Nov 2011 09:12:43 +0000</pubDate>
		<dc:creator>Sroan</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.sroan.com/?p=1925</guid>
		<description><![CDATA[如果一个多选题，选项数量不确定，如何记录用户的选项到1个字段内呢？ 方法1 A&#124;B&#124;D  用&#124;作为分割符，把用户所有记录都存在一个字段里。但是如果要统计多少用户先了A，如何是好？ 方法2 选项N=2^N A=1 B=2 C=4 D=8 如果选了 A B C 字段的值为11 方法3 使用二进制(类似方法2) 1 代表A 11 代表了AB 101 代表了A C 如果统计多少人选了B 那与10进行与操作 &#160; 以上内容为随便瞎想想到的，目测MYSQL效率不高，大数据量还是一个个字段存吧。]]></description>
			<content:encoded><![CDATA[<p>如果一个多选题，选项数量不确定，如何记录用户的选项到1个字段内呢？</p>
<p><strong>方法1</strong></p>
<p>A|B|D  用|作为分割符，把用户所有记录都存在一个字段里。但是如果要统计多少用户先了A，如何是好？</p>
<p><strong>方法2</strong></p>
<p>选项N=2^N A=1 B=2 C=4 D=8</p>
<p>如果选了 A B C 字段的值为11</p>
<p><strong>方法3</strong></p>
<p>使用二进制(类似方法2)</p>
<p>1 代表A</p>
<p>11 代表了AB</p>
<p>101 代表了A C</p>
<p>如果统计多少人选了B 那与10进行与操作</p>
<p>&nbsp;</p>
<p>以上内容为随便瞎想想到的，目测MYSQL效率不高，大数据量还是一个个字段存吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sroan.com/1925.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress禁止全英文评论（反垃圾）</title>
		<link>http://www.sroan.com/1770.html</link>
		<comments>http://www.sroan.com/1770.html#comments</comments>
		<pubDate>Thu, 11 Aug 2011 11:00:39 +0000</pubDate>
		<dc:creator>Sroan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[全英文]]></category>
		<category><![CDATA[反垃圾]]></category>
		<category><![CDATA[禁止]]></category>
		<category><![CDATA[评论]]></category>

		<guid isPermaLink="false">http://www.sroan.com/?p=1770</guid>
		<description><![CDATA[WordPress禁止全英文评论主要是为了反垃圾评论，因为一般垃圾评论都有是全英文带有链接。具体修改：打开当前使用的主题目录下的functions.php，增加函数： &#160; 123456789&#160; &#160; $pattern = '/[一-龥]/u'; &#160; &#160; // 禁止全英文评论 &#160; &#160; if&#40;!preg_match&#40;$pattern, $incoming_comment&#91;'comment_content'&#93;&#41;&#41; &#123; &#160; &#160; &#160; &#160; wp_die&#40; &#34;You should type some Chinese word (like \&#34;你好\&#34;) in your comment to pass the spam-check, thanks for your patience! 您的评论中必须包含汉字!&#34; &#41;; &#160; &#160; &#125; &#160; &#160; return&#40; $incoming_comment &#41;; &#125; add_filter&#40;'preprocess_comment', 'scp_comment_post'&#41;; 最终效果如图： 更多wordpress反垃圾方法：http://www.ludou.org/wordpress-simple-way-to-anti-spam.html]]></description>
			<content:encoded><![CDATA[<p>WordPress禁止全英文评论主要是为了反垃圾评论，因为一般垃圾评论都有是全英文带有链接。具体修改：打开当前使用的主题目录下的functions.php，增加函数：</p>
<p>&nbsp;</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; <span style="color: #000088;">$pattern</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/[一-龥]/u'</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// 禁止全英文评论</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pattern</span><span style="color: #339933;">,</span> <span style="color: #000088;">$incoming_comment</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'comment_content'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; wp_die<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;You should type some Chinese word (like <span style="color: #000099; font-weight: bold;">\&quot;</span>你好<span style="color: #000099; font-weight: bold;">\&quot;</span>) in your comment to pass the spam-check, thanks for your patience! 您的评论中必须包含汉字!&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">return</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$incoming_comment</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'preprocess_comment'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'scp_comment_post'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>最终效果如图：</p>
<p><a href="http://www.sroan.com/wp-content/uploads/2011/08/12.jpg"><img class="alignnone size-full wp-image-1771" title="wordpress禁止全英文评论（反垃圾）" src="http://www.sroan.com/wp-content/uploads/2011/08/12.jpg" alt="wordpress禁止全英文评论（反垃圾）" width="661" height="480" /></a></p>
<p>更多wordpress反垃圾方法：<a href="http://www.ludou.org/wordpress-simple-way-to-anti-spam.html">http://www.ludou.org/wordpress-simple-way-to-anti-spam.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sroan.com/1770.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP使用pathinfo获取文件扩展名</title>
		<link>http://www.sroan.com/1741.html</link>
		<comments>http://www.sroan.com/1741.html#comments</comments>
		<pubDate>Sat, 06 Aug 2011 11:20:21 +0000</pubDate>
		<dc:creator>Sroan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[pathinfo]]></category>
		<category><![CDATA[扩展名]]></category>
		<category><![CDATA[文件]]></category>

		<guid isPermaLink="false">http://www.sroan.com/?p=1741</guid>
		<description><![CDATA[通常使用explode获取文件扩展名。 其实pathinfo函数就能搞定: $extension = pathinfo($path, PATHINFO_EXTENSION);]]></description>
			<content:encoded><![CDATA[<p>通常使用explode获取文件扩展名。</p>
<p>其实pathinfo函数就能搞定:</p>
<p>$extension = pathinfo($path, PATHINFO_EXTENSION);</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sroan.com/1741.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MYSQL重启异常：MySQL manager or server PID file could not be found!</title>
		<link>http://www.sroan.com/1669.html</link>
		<comments>http://www.sroan.com/1669.html#comments</comments>
		<pubDate>Sat, 18 Jun 2011 11:00:58 +0000</pubDate>
		<dc:creator>Sroan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[异常]]></category>
		<category><![CDATA[重启]]></category>

		<guid isPermaLink="false">http://www.sroan.com/?p=1669</guid>
		<description><![CDATA[service mysqld stop 或者service mysqld restart的时候，很可能导致异常，提示一下信息。 MySQL manager or server PID file could not be found!       [FAILED] 主要原因是进程没有彻底关闭，导致冲突。 使用ps aux &#124;grep mysq* 查看当前进程 root      2643  0.0  0.2   4536  1224........ mysql     2757  0.0  1.2  36976  6608 ?.......... 其中2643 2757分别是进程号 如果看到上面的内容，那说明，Mysql的进程卡死了，这时用就要把这些卡死的进程都关闭 kill 进程号 然后启动Mysql 就ok了 service mysqld start]]></description>
			<content:encoded><![CDATA[<p>service mysqld stop 或者service mysqld restart的时候，很可能导致异常，提示一下信息。</p>
<p>MySQL manager or server PID file could not be found!       [FAILED]</p>
<p>主要原因是进程没有彻底关闭，导致冲突。</p>
<p>使用ps aux |grep mysq* 查看当前进程</p>
<p>root      2643  0.0  0.2   4536  1224........</p>
<p>mysql     2757  0.0  1.2  36976  6608 ?..........</p>
<p>其中2643 2757分别是进程号</p>
<p>如果看到上面的内容，那说明，Mysql的进程卡死了，这时用就要把这些卡死的进程都关闭</p>
<p>kill 进程号</p>
<p>然后启动Mysql 就ok了</p>
<p>service mysqld start</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sroan.com/1669.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LINUX下查看网站日志&amp;清除日志</title>
		<link>http://www.sroan.com/1664.html</link>
		<comments>http://www.sroan.com/1664.html#comments</comments>
		<pubDate>Mon, 13 Jun 2011 11:36:38 +0000</pubDate>
		<dc:creator>Sroan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[日志]]></category>
		<category><![CDATA[查看]]></category>
		<category><![CDATA[网站]]></category>

		<guid isPermaLink="false">http://www.sroan.com/?p=1664</guid>
		<description><![CDATA[查看日志可以使用tail命令 tail -100 /var/log/geexun-error_log 意思是查看最后100条的日志。 tail   -100   /var/log/geexun-error_log&#62;/var/log/geexun-error_log&#62;/var/log/geexun-error_log 意思是不完全清空保留最后100行的方法:(保留最后n行到新文件, 再清空老log文件)]]></description>
			<content:encoded><![CDATA[<p>查看日志可以使用tail命令</p>
<p>tail -100 /var/log/geexun-error_log</p>
<p>意思是查看最后100条的日志。</p>
<p>tail   -100   /var/log/geexun-error_log&gt;/var/log/geexun-error_log&gt;/var/log/geexun-error_log</p>
<p>意思是不完全清空保留最后100行的方法:(保留最后n行到新文件, 再清空老log文件)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sroan.com/1664.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP关闭Notice错误</title>
		<link>http://www.sroan.com/1662.html</link>
		<comments>http://www.sroan.com/1662.html#comments</comments>
		<pubDate>Mon, 13 Jun 2011 03:35:45 +0000</pubDate>
		<dc:creator>Sroan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Notice]]></category>
		<category><![CDATA[错误]]></category>

		<guid isPermaLink="false">http://www.sroan.com/?p=1662</guid>
		<description><![CDATA[服务器上线2周，日志报错多达1G。主要都是Notice错误，诸如：Notice: Use of undefined。可以选择关闭. 关闭 PHP 提示的方法 搜索php.ini： error_reporting = E_ALL 改为： error_reporting = E_ALL &#38; ~E_NOTICE 还有个不是办法的办法就是 在每个文件头上加 error_reporting(0); 或者 error_reporting(E_ALL ^ E_NOTICE); 不过关闭掉PHP错误输出并不会关闭php内核对错误的处理，代码中如果有大量的Notice级别的错误，还是会降低php程序的性能。还是应该谨慎的处理掉每处不合理的代码，这样既可以提高了代码的严谨性，也提高了代码的运行性能。 参考资料：PHP NOTICE级错误提示对程序性能影响的研究]]></description>
			<content:encoded><![CDATA[<p>服务器上线2周，日志报错多达1G。主要都是Notice错误，诸如：Notice: Use of undefined。可以选择关闭.</p>
<p>关闭 <span class='wp_keywordlink_affiliate'><a href="/category/programming/php" title="PHP" target="_blank">PHP</a></span> 提示的方法</p>
<p>搜索php.ini：</p>
<p>error_reporting = E_ALL</p>
<p>改为：</p>
<p>error_reporting = E_ALL &amp; ~E_NOTICE</p>
<p>还有个不是办法的办法就是</p>
<p>在每个文件头上加</p>
<p>error_reporting(0);</p>
<p>或者</p>
<pre id="best-answer-content">error_reporting(E_ALL ^ E_NOTICE);</pre>
<p id="best-answer-content">不过关闭掉<span class='wp_keywordlink_affiliate'><a href="/category/programming/php" title="PHP" target="_blank">PHP</a></span>错误输出并不会关闭php内核对错误的处理，代码中如果有大量的Notice级别的错误，还是会降低php程序的性能。还是应该谨慎的处理掉每处不合理的代码，这样既可以提高了代码的严谨性，也提高了代码的运行性能。</p>
<pre id="best-answer-content">参考资料：<a href="http://be-evil.org/?post=266">PHP NOTICE级错误提示对程序性能影响的研究</a></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.sroan.com/1662.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache、PHP、MySQL默认安装目录</title>
		<link>http://www.sroan.com/1645.html</link>
		<comments>http://www.sroan.com/1645.html#comments</comments>
		<pubDate>Tue, 31 May 2011 15:32:03 +0000</pubDate>
		<dc:creator>Sroan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[安装]]></category>
		<category><![CDATA[目录]]></category>
		<category><![CDATA[默认]]></category>

		<guid isPermaLink="false">http://www.sroan.com/?p=1645</guid>
		<description><![CDATA[Apache （1）如果采用RPM包安装，安装路径应在 /etc/httpd目录下          Apache配置文件:    /etc/httpd/conf/httpd.conf          Apache模块路径：  /usr/sbin/apachectl          Web目录:             /var/www/HTML （2）如果采用源代码安装，一般默认安装在/usr/local/apache2目录下 PHP （1）如果采用RPM包安装，安装路径应在 /etc/目录下          php的配置文件:     /etc/php.ini （2）如果采用源代码安装，一般默认安装在/usr/local/lib目录下          php配置文件:       /usr/local/lib/php.ini                               或 /usr/local/php/etc/php.ini  MySQL （1）如果采用RPM包安装，安装路径应在/usr/share/mysql目录下          MySQL dump文件位置： /usr/bin/mysqldump          MySQL配置文件:            /etc/my.cnf                                    或     /usr/share/mysql/my.cnf          MySQL数据目录：          /var/lib/mysql （2）如果采用源代码安装，一般默认安装在/usr/local/mysql目录下]]></description>
			<content:encoded><![CDATA[<p><strong>Apache<br />
</strong>（1）如果采用RPM包安装，安装路径应在 /etc/httpd目录下<br />
         Apache配置文件:    /etc/httpd/conf/httpd.conf<br />
         Apache模块路径：  /usr/sbin/apachectl<br />
         Web目录:             /var/www/<span class='wp_keywordlink_affiliate'><a href="http://www.sroan.com/category/programming/html_css_js" title="HTML" target="_blank">HTML</a></span><br />
（2）如果采用源代码安装，一般默认安装在/usr/local/apache2目录下</p>
<p><strong><span class='wp_keywordlink_affiliate'><a href="/category/programming/php" title="PHP" target="_blank">PHP</a></span></strong><br />
（1）如果采用RPM包安装，安装路径应在 /etc/目录下<br />
         php的配置文件:     /etc/php.ini<br />
（2）如果采用源代码安装，一般默认安装在/usr/local/lib目录下<br />
         php配置文件:       /usr/local/lib/php.ini<br />
                              或 /usr/local/php/etc/php.ini </p>
<p><strong>MySQL<br />
</strong>（1）如果采用RPM包安装，安装路径应在/usr/share/mysql目录下<br />
         MySQL dump文件位置： /usr/bin/mysqldump<br />
         MySQL配置文件:            /etc/my.cnf</p>
<p>                                   或     /usr/share/mysql/my.cnf<br />
         MySQL数据目录：          /var/lib/mysql<br />
（2）如果采用源代码安装，一般默认安装在/usr/local/mysql目录下</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sroan.com/1645.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>写个每天自动提示女朋友去睡觉的应用</title>
		<link>http://www.sroan.com/1634.html</link>
		<comments>http://www.sroan.com/1634.html#comments</comments>
		<pubDate>Tue, 24 May 2011 12:10:03 +0000</pubDate>
		<dc:creator>Sroan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[女朋友]]></category>
		<category><![CDATA[应用]]></category>
		<category><![CDATA[提示]]></category>
		<category><![CDATA[每天]]></category>
		<category><![CDATA[睡觉]]></category>

		<guid isPermaLink="false">http://www.sroan.com/?p=1634</guid>
		<description><![CDATA[昨天在《5月23日》提到准备写三个程序，今天花了点时间把第一个写完了——每天能够自动提示女朋友去睡觉的程序。 简单的思路是每当0点到5点之间，发现她又有新的微博出现的时候，程序自动去留一条言，提示她去睡觉。 程序主要分三大部分，第一步微博应用的认证，第二部设置相关参数，第三部定时检查是否有新微薄出现。 第一步，略。 第二部，主要保存用户自己的id，Ta的id，Ta最后条微博的id、时间，检查的开始时间、结束时间，你要留给Ta的话，以及微博账号认证的oauth_token、oauth_token_secret。 weibolist.php &#60;?php header("Content-type: text/HTML; charset=utf-8"); session_start(); include_once( 'config.php' ); include_once( 'weibooauth.php' ); $url=$_SERVER['HTTP_HOST'].$_SERVER["PHP_SELF"]; if (!isset($_POST['u_id']) &#38;&#38; !isset($_POST['comments']) &#38;&#38; !isset($_POST['begin_time']) &#38;&#38; !isset($_POST['end_time'])) { echo &#60;&#60;&#60; EOT &#60;form action="http://{$url}"  method="post"&#62;   Ta微博的昵称 &#60;input type="text" name="u_id"   size="15" maxlength="20"  title="Ta微博的昵称" /&#62;&#60;br&#62; 想要给TA留的言 &#60;input type="text" name="comments"   size="15" maxlength="200"  title="想要给TA留的言" /&#62;&#60;br&#62; 起始时间(24小时制) &#60;input type="text" name="begin_time"   size="15" maxlength="6"  title="起始时间" /&#62;&#60;br&#62; 终止时间(24小时制) &#60;input type="text" name="end_time"   size="15" maxlength="6"  title="终止时间" /&#62;&#60;br&#62; &#60;input type="submit" value="提交" name="name"&#62; &#60;/form&#62; EOT; } else  { include_once( 'conn.php' );//连接数据库 $c = new WeiboClient( WB_AKEY ,                        WB_SKEY ,                        $_SESSION['last_key']['oauth_token'] ,                        $_SESSION['last_key']['oauth_token_secret']  ); $u_id=$_POST['u_id']; $comments=$_POST['comments']; $begin_time=$_POST['begin_time']; $end_time=$_POST['end_time']; $msg = $c-&#62;show_user($u_id); if ($msg === false &#124;&#124; $msg === null){ echo "Error occured"; return false; } if (isset($msg['error_code']) &#38;&#38; isset($msg['error'])){ echo ('Error_code: '.$msg['error_code'].';  Error: '.$msg['error'] ); return false; } $last_weibo_id=$msg['status']['id']; $oauth_token=$_SESSION['last_key']['oauth_token']; $oauth_token_secret=$_SESSION['last_key']['oauth_token_secret']; $me = $c-&#62;verify_credentials(); $u_my_id=$me['id']; $mysql = "SELECT * FROM goodnight WHERE u_my_id = '".$u_my_id."' ";   Read More &#187;]]></description>
			<content:encoded><![CDATA[<p>昨天在《<a href="http://www.sroan.com/1624.html" target="_blank">5月23日</a>》提到准备写三个程序，今天花了点时间把第一个写完了——每天能够自动提示女朋友去睡觉的程序。</p>
<p>简单的思路是每当0点到5点之间，发现她又有新的微博出现的时候，程序自动去留一条言，提示她去睡觉。</p>
<p>程序主要分三大部分，第一步微博应用的认证，第二部设置相关参数，第三部定时检查是否有新微薄出现。</p>
<p><strong>第一步，略。</strong></p>
<p><strong>第二部，主要保存用户自己的id，Ta的id，Ta最后条微博的id、时间，检查的开始时间、结束时间，你要留给Ta的话，以及微博账号认证的oauth_token、oauth_token_secret。</strong></p>
<p><strong><a href="http://www.sroan.com/wp-content/uploads/2011/05/weibo.png"><img class="alignnone size-full wp-image-1635" title="weibo" src="http://www.sroan.com/wp-content/uploads/2011/05/weibo.png" alt="" width="554" height="305" /></a><br />
</strong></p>
<p><strong>weibolist.php</strong></p>
<p>&lt;?php</p>
<p>header("Content-type: text/<span class='wp_keywordlink_affiliate'><a href="http://www.sroan.com/category/programming/html_css_js" title="HTML" target="_blank">HTML</a></span>; charset=utf-8");</p>
<p>session_start();</p>
<p>include_once( 'config.php' );</p>
<p>include_once( 'weibooauth.php' );</p>
<p>$url=$_SERVER['HTTP_HOST'].$_SERVER["<span class='wp_keywordlink_affiliate'><a href="/category/programming/php" title="PHP" target="_blank">PHP</a></span>_SELF"];</p>
<p>if (!isset($_POST['u_id']) &amp;&amp; !isset($_POST['comments']) &amp;&amp; !isset($_POST['begin_time']) &amp;&amp; !isset($_POST['end_time']))</p>
<p>{</p>
<p>echo &lt;&lt;&lt; EOT</p>
<p>&lt;form action="http://{$url}"  method="post"&gt;  </p>
<p>Ta微博的昵称</p>
<p>&lt;input type="text" name="u_id"   size="15" maxlength="20"  title="Ta微博的昵称" /&gt;&lt;br&gt;</p>
<p>想要给TA留的言</p>
<p>&lt;input type="text" name="comments"   size="15" maxlength="200"  title="想要给TA留的言" /&gt;&lt;br&gt;</p>
<p>起始时间(24小时制)</p>
<p>&lt;input type="text" name="begin_time"   size="15" maxlength="6"  title="起始时间" /&gt;&lt;br&gt;</p>
<p>终止时间(24小时制)</p>
<p>&lt;input type="text" name="end_time"   size="15" maxlength="6"  title="终止时间" /&gt;&lt;br&gt;</p>
<p>&lt;input type="submit" value="提交" name="name"&gt;</p>
<p>&lt;/form&gt;</p>
<p>EOT;</p>
<p>}</p>
<p>else </p>
<p>{</p>
<p>include_once( 'conn.php' );//连接数据库</p>
<p>$c = new WeiboClient( WB_AKEY , </p>
<p>                      WB_SKEY , </p>
<p>                      $_SESSION['last_key']['oauth_token'] , </p>
<p>                      $_SESSION['last_key']['oauth_token_secret']  );</p>
<p>$u_id=$_POST['u_id'];</p>
<p>$comments=$_POST['comments'];</p>
<p>$begin_time=$_POST['begin_time'];</p>
<p>$end_time=$_POST['end_time'];</p>
<p>$msg = $c-&gt;show_user($u_id);</p>
<p>if ($msg === false || $msg === null){</p>
<p>echo "Error occured";</p>
<p>return false;</p>
<p>}</p>
<p>if (isset($msg['error_code']) &amp;&amp; isset($msg['error'])){</p>
<p>echo ('Error_code: '.$msg['error_code'].';  Error: '.$msg['error'] );</p>
<p>return false;</p>
<p>}</p>
<p>$last_weibo_id=$msg['status']['id'];</p>
<p>$oauth_token=$_SESSION['last_key']['oauth_token'];</p>
<p>$oauth_token_secret=$_SESSION['last_key']['oauth_token_secret'];</p>
<p>$me = $c-&gt;verify_credentials();</p>
<p>$u_my_id=$me['id'];</p>
<p>$mysql = "SELECT * FROM goodnight WHERE u_my_id = '".$u_my_id."' ";   </p>
<p>$result = mysql_query($mysql) or die(mysql_error());</p>
<p>$num = mysql_num_rows($result);    </p>
<p>if($num==0)</p>
<p>{</p>
<p>mysql_query("INSERT INTO goodnight (u_my_id,oauth_token,oauth_token_secret,u_id,last_weibo_id,begin_time,end_time,comments) VALUES ('".$u_my_id."','".$oauth_token."','".$oauth_token_secret."','".$u_id."','".$last_weibo_id."','".$begin_time."','".$end_time."','".$comments."')")or die(mysql_error());</p>
<p>echo "保存成功&lt;br&gt;";</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>$mysql = "UPDATE goodnight SET u_id = '".$u_id."',last_weibo_id = '".$last_weibo_id."',begin_time = '".$begin_time."',end_time = '".$end_time."',comments = '".$comments."' WHERE u_my_id = '".$u_my_id."'";   </p>
<p><br class="spacer_" /></p>
<p>$result = mysql_query($mysql) or die(mysql_error());</p>
<p>echo "修改成功&lt;br&gt;";</p>
<p>}</p>
<p>echo &lt;&lt;&lt; EOT</p>
<p>{$u_id}每天在{$begin_time}和{$end_time}之间还在发微博的话，系统将自动留言：{$comments}到微博{$last_weibo_id}</p>
<p>EOT;</p>
<p>}</p>
<p>?&gt;</p>
<p>&lt;?php</p>
<p>header("Content-type: text/<span class='wp_keywordlink_affiliate'><a href="http://www.sroan.com/category/programming/html_css_js" title="HTML" target="_blank">HTML</a></span>; charset=utf-8");</p>
<p>session_start();</p>
<p>include_once( 'config.php' );</p>
<p>include_once( 'weibooauth.php' );</p>
<p>$url=$_SERVER['HTTP_HOST'].$_SERVER["<span class='wp_keywordlink_affiliate'><a href="/category/programming/php" title="PHP" target="_blank">PHP</a></span>_SELF"];</p>
<p>if (!isset($_POST['u_id']) &amp;&amp; !isset($_POST['comments']) &amp;&amp; !isset($_POST['begin_time']) &amp;&amp; !isset($_POST['end_time']))</p>
<p>{</p>
<p>echo &lt;&lt;&lt; EOT</p>
<p>&lt;form action="http://{$url}"  method="post"&gt;  </p>
<p>Ta微博的昵称</p>
<p>&lt;input type="text" name="u_id"   size="15" maxlength="20"  title="Ta微博的昵称" /&gt;&lt;br&gt;</p>
<p>想要给TA留的言</p>
<p>&lt;input type="text" name="comments"   size="15" maxlength="200"  title="想要给TA留的言" /&gt;&lt;br&gt;</p>
<p>起始时间(24小时制)</p>
<p>&lt;input type="text" name="begin_time"   size="15" maxlength="6"  title="起始时间" /&gt;&lt;br&gt;</p>
<p>终止时间(24小时制)</p>
<p>&lt;input type="text" name="end_time"   size="15" maxlength="6"  title="终止时间" /&gt;&lt;br&gt;</p>
<p>&lt;input type="submit" value="提交" name="name"&gt;</p>
<p>&lt;/form&gt;</p>
<p>EOT;</p>
<p><br class="spacer_" /></p>
<p>}</p>
<p>else </p>
<p>{</p>
<p>include_once( 'conn.php' );//连接数据库</p>
<p><br class="spacer_" /></p>
<p>$c = new WeiboClient( WB_AKEY , </p>
<p>                      WB_SKEY , </p>
<p>                      $_SESSION['last_key']['oauth_token'] , </p>
<p>                      $_SESSION['last_key']['oauth_token_secret']  );</p>
<p>$u_id=$_POST['u_id'];</p>
<p>$comments=$_POST['comments'];</p>
<p>$begin_time=$_POST['begin_time'];</p>
<p>$end_time=$_POST['end_time'];</p>
<p><br class="spacer_" /></p>
<p>$msg = $c-&gt;show_user($u_id);</p>
<p>if ($msg === false || $msg === null){</p>
<p>echo "Error occured";</p>
<p>return false;</p>
<p>}</p>
<p>if (isset($msg['error_code']) &amp;&amp; isset($msg['error'])){</p>
<p>echo ('Error_code: '.$msg['error_code'].';  Error: '.$msg['error'] );</p>
<p>return false;</p>
<p>}</p>
<p>$last_weibo_id=$msg['status']['id'];</p>
<p>$oauth_token=$_SESSION['last_key']['oauth_token'];</p>
<p>$oauth_token_secret=$_SESSION['last_key']['oauth_token_secret'];</p>
<p><br class="spacer_" /></p>
<p>$me = $c-&gt;verify_credentials();</p>
<p>$u_my_id=$me['id'];</p>
<p>$mysql = "SELECT * FROM goodnight WHERE u_my_id = '".$u_my_id."' ";   </p>
<p>$result = mysql_query($mysql) or die(mysql_error());</p>
<p>$num = mysql_num_rows($result);    </p>
<p>if($num==0)</p>
<p>{</p>
<p>mysql_query("INSERT INTO goodnight (u_my_id,oauth_token,oauth_token_secret,u_id,last_weibo_id,begin_time,end_time,comments) VALUES ('".$u_my_id."','".$oauth_token."','".$oauth_token_secret."','".$u_id."','".$last_weibo_id."','".$begin_time."','".$end_time."','".$comments."')")or die(mysql_error());</p>
<p>echo "保存成功&lt;br&gt;";</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>$mysql = "UPDATE goodnight SET u_id = '".$u_id."',last_weibo_id = '".$last_weibo_id."',begin_time = '".$begin_time."',end_time = '".$end_time."',comments = '".$comments."' WHERE u_my_id = '".$u_my_id."'";   </p>
<p>$result = mysql_query($mysql) or die(mysql_error());</p>
<p>echo "修改成功&lt;br&gt;";</p>
<p>}</p>
<p>echo &lt;&lt;&lt; EOT</p>
<p>{$u_id}每天在{$begin_time}和{$end_time}之间还在发微博的话，系统将自动留言：{$comments}到微博{$last_weibo_id}</p>
<p>EOT;</p>
<p> }</p>
<p>?&gt;</p>
<p><strong>第三部，读取数据库存的最后条微博的ID和目前最后条微博ID是否相同，如果不同，并且在时间内，则触法评论功能。其中每次评论需要不同，否则会出现BUG。</strong></p>
<p><strong>goodnight.php</strong></p>
<p><br class="spacer_" /></p>
<p>&lt;?php</p>
<p>header("Content-type: text/<span class='wp_keywordlink_affiliate'><a href="http://www.sroan.com/category/programming/html_css_js" title="HTML" target="_blank">HTML</a></span>; charset=utf-8");</p>
<p>echo &lt;&lt;&lt; EOT</p>
<p>&lt;head&gt;</p>
<p>&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;</p>
<p>&lt;title&gt;goodnight&lt;/title&gt;</p>
<p>&lt;meta http-equiv=refresh content="60"&gt;</p>
<p>&lt;/head&gt;</p>
<p><br class="spacer_" /></p>
<p>EOT;</p>
<p>ignore_user_abort(1);</p>
<p>set_time_limit(0);</p>
<p>date_default_timezone_set('Asia/Shanghai');</p>
<p>include_once( 'conn.php' );//连接数据库</p>
<p>include_once( 'config.php' );</p>
<p>include_once( 'weibooauth.php' );</p>
<p><br class="spacer_" /></p>
<p>$result = mysql_query("SELECT * FROM goodnight ");</p>
<p><br class="spacer_" /></p>
<p>while($row = mysql_fetch_array($result))</p>
<p>  {</p>
<p>  $u_my_id=$row['u_my_id'];</p>
<p>  $oauth_token=$row['oauth_token'];</p>
<p>  $oauth_token_secret=$row['oauth_token_secret'];</p>
<p>  $u_id=$row['u_id'];</p>
<p>  $last_weibo_id=$row['last_weibo_id'];</p>
<p>  $begin_time=$row['begin_time'];</p>
<p>  $end_time=$row['end_time'];</p>
<p>  $comments=$row['comments'];</p>
<p><br class="spacer_" /></p>
<p>  $c = new WeiboClient( WB_AKEY , </p>
<p>                      WB_SKEY , </p>
<p>                      $oauth_token, </p>
<p>                      $oauth_token_secret );</p>
<p>  $msg = $c-&gt;show_user($u_id);</p>
<p>  if ($msg === false || $msg === null){</p>
<p>echo "Error occured";</p>
<p>return false;</p>
<p>}</p>
<p>if (isset($msg['error_code']) &amp;&amp; isset($msg['error'])){</p>
<p>echo ('Error_code: '.$msg['error_code'].';  Error: '.$msg['error'] );</p>
<p>return false;</p>
<p>}</p>
<p>$sid=$msg['status']['id'];//获取最近评论ID</p>
<p>if($sid!=$last_weibo_id)</p>
<p>{</p>
<p>$weibo_time=$msg['status']['created_at'];//获取最近一条微博时间</p>
<p><br class="spacer_" /></p>
<p>$weibo_time=date('H:i:s', strtotime($weibo_time));</p>
<p>$comments="都".$weibo_time."了，".$comments;//避免每次回复内容相同，否则会报错</p>
<p>if(($weibo_time&lt;$end_time&amp;&amp;$weibo_time&gt;$begin_time&amp;&amp;$begin_time&lt;$end_time)||($begin_time&gt;$end_time&amp;&amp;$weibo_time&gt;$begin_time)||($begin_time&gt;$end_time&amp;&amp;$weibo_time&lt;$end_time))</p>
<p>{</p>
<p>$msg = $c-&gt;send_comment($sid,$comments,null);</p>
<p>if ($msg === false || $msg === null){</p>
<p>echo "Error occured";</p>
<p>return false;</p>
<p>}</p>
<p>if (isset($msg['error_code']) &amp;&amp; isset($msg['error'])){</p>
<p>echo ('Error_code: '.$msg['error_code'].';  Error: '.$msg['error'] );</p>
<p>return false;</p>
<p>}</p>
<p><br class="spacer_" /></p>
<p>echo "发送成功";</p>
<p>$mysql = "UPDATE goodnight SET  last_weibo_id = '".$sid."' WHERE u_my_id = '".$u_my_id."'";   </p>
<p>$result = mysql_query($mysql) or die(mysql_error());</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>echo "未在时间范围内不修改";</p>
<p>}</p>
<p>}</p>
<p>else</p>
<p>{echo "这条微博是以前的";}</p>
<p>}</p>
<p>$now=date('Y-m-d H:i:s');</p>
<p>echo "&lt;br&gt;".$now;</p>
<p>?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sroan.com/1634.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP简易实现中文搜索功能</title>
		<link>http://www.sroan.com/1612.html</link>
		<comments>http://www.sroan.com/1612.html#comments</comments>
		<pubDate>Fri, 13 May 2011 11:00:12 +0000</pubDate>
		<dc:creator>Sroan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[中文]]></category>
		<category><![CDATA[搜索]]></category>

		<guid isPermaLink="false">http://www.sroan.com/?p=1612</guid>
		<description><![CDATA[核心思路：使用mysql全文索引，但是mysql全文索引不支持中文，所以需要进行一些处理。 创建一张专门用于搜索的索引表 CREATE TABLE search ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, question_id INT(6),//相对应的题目ID 根据实际自行修改 body TEXT,  //存放分词结果 FULLTEXT (body)//全文索引 ); 数据录入 1、将内容进行分词（可以使用开源的scws 或者dedesplit） 2、分词结果base64转码存入数据库 数据库查询 1、限制查询输入长度（不超过64个字符 //自动截取前64个字符） 2、将查询内容进行分词 3、去除标点符号和无用关键词（例如 的 地 得） 4、将分词结果base64转码，在数据库全文索引 5、数据库按照相关性返回结果 6、根据对应题目ID找到该题地址 参考资料： http://edu.codepub.com/2010/0606/23306.php http://info.codepub.com/2008/07/info-20442.html]]></description>
			<content:encoded><![CDATA[<p>核心思路：使用mysql全文索引，但是mysql全文索引不支持中文，所以需要进行一些处理。</p>
<p>创建一张专门用于搜索的索引表</p>
<p><br class="spacer_" /></p>
<div id="_mcePaste">CREATE TABLE search (</div>
<div id="_mcePaste">id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,</div>
<div id="_mcePaste">question_id INT(6),//相对应的题目ID 根据实际自行修改</div>
<div id="_mcePaste">body TEXT,  //存放分词结果</div>
<div id="_mcePaste">FULLTEXT (body)//全文索引</div>
<div id="_mcePaste">);</div>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p>数据录入</p>
<p>1、将内容进行分词（可以使用开源的<a href="http://www.ftphp.com/scws/index.php">scws</a> 或者<a href="http://www.dedecms.com/upimg/soft/dedesoft/dedesplit.rar">dedesplit</a>）</p>
<p>2、分词结果base64转码存入数据库</p>
<p><br class="spacer_" /></p>
<p>数据库查询</p>
<p>1、限制查询输入长度（不超过64个字符 //自动截取前64个字符）</p>
<p>2、将查询内容进行分词</p>
<p>3、去除标点符号和无用关键词（例如 的 地 得）</p>
<p>4、将分词结果base64转码，在数据库全文索引</p>
<p>5、数据库按照相关性返回结果</p>
<p>6、根据对应题目ID找到该题地址</p>
<p>参考资料：</p>
<p><a href="http://edu.codepub.com/2010/0606/23306.php">http://edu.codepub.com/2010/0606/23306.php</a></p>
<p><a href="http://info.codepub.com/2008/07/info-20442.html">http://info.codepub.com/2008/07/info-20442.html</a></p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sroan.com/1612.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

