<?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>avenger::Life() &#187; LooPo</title>
	<atom:link href="http://avenger.name/blog/category/programming/loopo/feed/" rel="self" type="application/rss+xml" />
	<link>http://avenger.name</link>
	<description>Some Words. Explain My Life.</description>
	<lastBuildDate>Fri, 19 Mar 2010 07:39:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>乐铺新版上线</title>
		<link>http://avenger.name/blog/loopo20/</link>
		<comments>http://avenger.name/blog/loopo20/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 10:28:26 +0000</pubDate>
		<dc:creator>avenger</dc:creator>
				<category><![CDATA[LooPo]]></category>

		<guid isPermaLink="false">http://avenger.name/blog/%e4%b9%90%e9%93%ba%e6%96%b0%e7%89%88%e4%b8%8a%e7%ba%bf/</guid>
		<description><![CDATA[LooPo乐铺 从开始策划到上线，已经近半年时间了。怎一个“累”字。 接下来就要安下心来整理开源项目的代码了。 Related PostsNovember 2, 2008 -- 使用 Google 帐号来登录乐铺吧July 3, 2006 -- 404 模拟 URL RewriteApril 27, 2006 -- 按拼音排序TAGApril 10, 2006 -- 1.0与2.0]]></description>
			<content:encoded><![CDATA[<p><a title="photo sharing" href="http://www.flickr.com/photos/avenger/3431227337/"><img src="http://avenger.name/wp-content/uploads/2009/04/3431227337_7c97fe8c88_m.jpg" alt="3431227337_7c97fe8c88_m" title="3431227337_7c97fe8c88_m" width="157" height="240" class="alignnone size-full wp-image-297" /></a></p>
<p><a href="http://www.loopo.cn">LooPo乐铺</a></p>
<p>从开始策划到上线，已经近半年时间了。怎一个“累”字。</p>
<p>接下来就要安下心来整理开源项目的代码了。</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>November 2, 2008 -- <a href="http://avenger.name/blog/loopo-for-google-accounts/" title="使用 Google 帐号来登录乐铺吧">使用 Google 帐号来登录乐铺吧</a></li><li>July 3, 2006 -- <a href="http://avenger.name/blog/404-rewrite/" title="404 模拟 URL Rewrite">404 模拟 URL Rewrite</a></li><li>April 27, 2006 -- <a href="http://avenger.name/blog/order-tag-by-pinyin/" title="按拼音排序TAG">按拼音排序TAG</a></li><li>April 10, 2006 -- <a href="http://avenger.name/blog/10-20/" title="1.0与2.0">1.0与2.0</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://avenger.name/blog/loopo20/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>使用 Google 帐号来登录乐铺吧</title>
		<link>http://avenger.name/blog/loopo-for-google-accounts/</link>
		<comments>http://avenger.name/blog/loopo-for-google-accounts/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 21:51:54 +0000</pubDate>
		<dc:creator>avenger</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[LooPo]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[OpenID]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://avenger.name/?p=272</guid>
		<description><![CDATA[虽然早在去年初，乐铺就已经支持 OpenID 登录方式了，当时还为 OpenID 的中文名拉过赞助…… 不过对于大部分人而言，可能对 OpenID 还比较陌生。从国内寥寥无几支持 OpenID 的网站就可以看得出来。 我坚信这种情况不会持续太久了，前段时间 Yahoo! 率先支持了 OpenID 协议，允许在支持 OpenID 的网站上使用 Yahoo! 帐号登录。上月末 Google 也加入了支持行列（虽然支持的很烂）。相信随着两大网络巨头的加入，大家对 OpenID 的应用会越来越熟悉了吧。 抽了一个晚上时间，把乐铺原来简陋的 OpenID 功能完善了一下，现在已经可以允许一个帐号同时绑定多个 OpenID 了，并且加入了通过 Google 帐号注册的功能（Yahoo! 的 Api 没找到返回 Email 的地方，所以不能注册，只能绑定）。希望能对国内的 OpenID 推动起到一些作用。欢迎大家亲自去体验。 对了，还有个秘密透漏下：凡是通过 OpenID 注册的帐号，会自动获得 N 元的折扣券一张哦，N 是多少？对不起，我也不知道…… Related PostsApril 12, 2009 -- 乐铺新版上线October 30, 2008 -- YUI Compressor for [...]]]></description>
			<content:encoded><![CDATA[<p class='fp'>虽然早在去年初，<a href="http://www.loopo.cn/openid">乐铺</a>就已经支持 <a href="http://www.loopo.cn/openid">OpenID</a> 登录方式了，当时还为 OpenID 的中文名拉过赞助…… 不过对于大部分人而言，可能对 OpenID 还比较陌生。从国内寥寥无几支持 OpenID 的网站就可以看得出来。</p>
<p>我坚信这种情况不会持续太久了，前段时间 Yahoo! 率先支持了 OpenID 协议，允许在支持 OpenID 的网站上使用 Yahoo! 帐号登录。上月末 <a href="http://code.google.com/intl/zh-CN/apis/accounts/docs/OpenID.html">Google</a> 也加入了支持行列（虽然支持的很烂）。相信随着两大网络巨头的加入，大家对 OpenID 的应用会越来越熟悉了吧。</p>
<p><a href="http://avenger.name/wp-content/uploads/2008/11/screenshot-2.png"><img class="alignnone size-full wp-image-273" title="screenshot-2" src="http://avenger.name/wp-content/uploads/2008/11/screenshot-2.png" alt="" width="466" height="350" /></a></p>
<p>抽了一个晚上时间，把乐铺原来简陋的 <a href="http://www.loopo.cn/openid">OpenID</a> 功能完善了一下，现在已经可以允许一个帐号同时绑定多个 OpenID 了，并且加入了通过  Google 帐号注册的功能（Yahoo! 的 Api 没找到返回 Email 的地方，所以不能注册，只能绑定）。希望能对国内的 OpenID 推动起到一些作用。欢迎大家亲自去<a href="http://www.loopo.cn/openid">体验</a>。</p>
<p>对了，还有个秘密透漏下：凡是通过 OpenID 注册的帐号，会自动获得 N 元的折扣券一张哦，N 是多少？对不起，我也不知道……</p>
<p><a href="http://avenger.name/wp-content/uploads/2008/11/screenshot-2.png"><br />
</a></p>
</p><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>April 12, 2009 -- <a href="http://avenger.name/blog/loopo20/" title="乐铺新版上线">乐铺新版上线</a></li><li>October 30, 2008 -- <a href="http://avenger.name/blog/yui-compressor-for-nautilus/" title="YUI Compressor for nautilus">YUI Compressor for nautilus</a></li><li>September 22, 2007 -- <a href="http://avenger.name/blog/superfluous-info-times/" title="这是一个信息过剩的年代">这是一个信息过剩的年代</a></li><li>September 2, 2007 -- <a href="http://avenger.name/blog/gps-test/" title="爬鼓山">爬鼓山</a></li><li>January 16, 2007 -- <a href="http://avenger.name/blog/picasa-catch-me-money/" title="被 Picasa 吃了 200 块">被 Picasa 吃了 200 块</a></li><li>July 3, 2006 -- <a href="http://avenger.name/blog/404-rewrite/" title="404 模拟 URL Rewrite">404 模拟 URL Rewrite</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://avenger.name/blog/loopo-for-google-accounts/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>404 模拟 URL Rewrite</title>
		<link>http://avenger.name/blog/404-rewrite/</link>
		<comments>http://avenger.name/blog/404-rewrite/#comments</comments>
		<pubDate>Mon, 03 Jul 2006 03:11:49 +0000</pubDate>
		<dc:creator>avenger</dc:creator>
				<category><![CDATA[LooPo]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[rewrite]]></category>

		<guid isPermaLink="false">http://avenger.name/?p=146</guid>
		<description><![CDATA[乐铺的服务器不支持 apache url rewrite，所以之前的网址都很“丑陋”，比如： http://www.loopo.cn/items.php/110 http://www.loopo.cn/forum.php/1/100 因为这个原因，被几个朋友BS了几次…… 今天在DB的时候，忽然想到一个办法：乐铺的服务器是支持自定义404页面的，这样的话，就可以把所有的请求定位到这个404页来处理了，即所有的页面“都是404”，然后再统一由404.php来处理重定向。 花了差不多十分钟，实现了一下，现在乐铺的页面url是类似这样的了： http://www.loopo.cn/items/110 http://www.loopo.cn/forum/1/100 会好看一些，不知道会不会有什么副作用。 核心代码差不多类似于： 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 function _404&#40;&#41; &#123; $url = $_SERVER&#91;'REQUEST_URI'&#93;; if &#40;$tmp = explode&#40;&#34;/&#34;, $url&#41;&#41; &#123; array_shift&#40;$tmp&#41;; $_SERVER&#91;'PATH_INFO'&#93; = join&#40;&#34;/&#34;, $tmp&#41;; parse_str&#40;$_SERVER&#91;'REDIRECT_QUERY_STRING'&#93;, $_REQUEST&#41;; parse_str&#40;$_SERVER&#91;'REDIRECT_QUERY_STRING'&#93;, $_GET&#41;; &#125; $rewrite&#91;&#93; = [...]]]></description>
			<content:encoded><![CDATA[<p class='fp'>乐铺的服务器不支持 apache url rewrite，所以之前的网址都很“丑陋”，比如：</p>
<p>http://www.loopo.cn/items.php/110</p>
<p>http://www.loopo.cn/forum.php/1/100</p>
<p>因为这个原因，被几个朋友BS了几次……</p>
<p>今天在DB的时候，忽然想到一个办法：乐铺的服务器是支持自定义404页面的，这样的话，就可以把所有的请求定位到这个404页来处理了，即所有的页面“都是404”，然后再统一由404.php来处理重定向。</p>
<p><span id="more-146"></span></p>
<p>花了差不多十分钟，实现了一下，现在乐铺的页面url是类似这样的了：</p>
<p>http://www.loopo.cn/items/110</p>
<p>http://www.loopo.cn/forum/1/100</p>
<p>会好看一些，不知道会不会有什么副作用。</p>
<p>核心代码差不多类似于：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> _404<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$tmp</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">array_shift</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tmp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PATH_INFO'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">join</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$tmp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">parse_str</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REDIRECT_QUERY_STRING'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">parse_str</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REDIRECT_QUERY_STRING'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000088;">$rewrite</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'|^/whatnew/?|i'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'whatnew.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$rewrite</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'|^/whathot/?|i'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'whathot.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$rewrite</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'|^/whatmiss/?|i'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'whatmiss.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$rewrite</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #339933;">@</span><span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;HTTP/1.1 200 OK&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">include</span> ROOT<span style="color: #339933;">.</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>exit<span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><strong>UPDATE：</strong>在测试的时候，发现404头信息已经发出来了，这样的话，可能会有被搜索引擎忽略的危险，后来又把代码改进了一下。加了一个200的头信息进去，不知道还会不会有问题，持续跟踪中……</p>
</p><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>August 4, 2009 -- <a href="http://avenger.name/blog/how-php5-use-dotnet-soap/" title="PHP5 调用 dot NET Soap WebService 的技巧">PHP5 调用 dot NET Soap WebService 的技巧</a></li><li>April 12, 2009 -- <a href="http://avenger.name/blog/loopo20/" title="乐铺新版上线">乐铺新版上线</a></li><li>November 2, 2008 -- <a href="http://avenger.name/blog/loopo-for-google-accounts/" title="使用 Google 帐号来登录乐铺吧">使用 Google 帐号来登录乐铺吧</a></li><li>July 19, 2008 -- <a href="http://avenger.name/blog/first-facebook-app/" title="我的第一个 facebook app">我的第一个 facebook app</a></li><li>July 3, 2008 -- <a href="http://avenger.name/about/" title="About">About</a></li><li>October 8, 2007 -- <a href="http://avenger.name/blog/pressline/" title="PressLine">PressLine</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://avenger.name/blog/404-rewrite/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Trackback spam</title>
		<link>http://avenger.name/blog/trackback-spam/</link>
		<comments>http://avenger.name/blog/trackback-spam/#comments</comments>
		<pubDate>Sat, 29 Apr 2006 04:47:56 +0000</pubDate>
		<dc:creator>avenger</dc:creator>
				<category><![CDATA[LooPo]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://avenger.name/?p=135</guid>
		<description><![CDATA[最近乐铺经常受到一些 trackback spam 的骚扰，起先没有在意，都是直接在后台删除了之。没想到这两天这些垃圾们越来越猖狂起来，今天一天就有了100多条类似的信息。 在google上用“trackback spam”为关键字找了一下，看来受骚扰的还不至乐铺。心里平衡了一些。-__- 参考了这篇文章上面的办法，把目前物品的 trackback 地址改成不规律的了，不知道会不会有点效果。 持续跟踪中…… Related PostsDecember 11, 2007 -- 看图不说话August 2, 2004 -- 偶的Gmail每天收到近五十封垃圾邮件]]></description>
			<content:encoded><![CDATA[<p class='fp'>最近乐铺经常受到一些 trackback spam 的骚扰，起先没有在意，都是直接在后台删除了之。没想到这两天这些垃圾们越来越猖狂起来，今天一天就有了100多条类似的信息。</p>
<p>在google上用“<a href="http://www.google.com/search?hl=zh-CN&#038;q=trackback+spam&#038;btnG=%E6%90%9C%E7%B4%A2&#038;lr=lang_zh-CN">trackback spam</a>”为关键字找了一下，看来受骚扰的还不至乐铺。心里平衡了一些。-__-</p>
<p>参考了<a href="http://www.duduwolf.com/post/164.asp">这篇文章</a>上面的办法，把目前物品的 trackback 地址改成不规律的了，不知道会不会有点效果。</p>
<p>持续跟踪中……</p>
</p><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>December 11, 2007 -- <a href="http://avenger.name/blog/phone-spam/" title="看图不说话">看图不说话</a></li><li>August 2, 2004 -- <a href="http://avenger.name/blog/gmail-spam/" title="偶的Gmail每天收到近五十封垃圾邮件">偶的Gmail每天收到近五十封垃圾邮件</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://avenger.name/blog/trackback-spam/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>按拼音排序TAG</title>
		<link>http://avenger.name/blog/order-tag-by-pinyin/</link>
		<comments>http://avenger.name/blog/order-tag-by-pinyin/#comments</comments>
		<pubDate>Thu, 27 Apr 2006 01:07:57 +0000</pubDate>
		<dc:creator>avenger</dc:creator>
				<category><![CDATA[LooPo]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[pinyin]]></category>
		<category><![CDATA[tag]]></category>

		<guid isPermaLink="false">http://avenger.name/?p=134</guid>
		<description><![CDATA[在解决乐铺的 tag 排序的问题上，碰到一点麻烦。原因出在乐铺的所有 tag 列表页：http://www.loopo.cn/tags/ 刚开始是按照 tag 数量的多少排序的，这样最简单，不过缺点就是没有“公平对待”每一个 tag，特别是用了 tag 云状显示结构以后，最大的 tag 在前面，最小的在后面，看起来很不舒服。 后台改成了按 tag 的 name 排序，在数据库中是直接 ORDER BY tagname 操作的，这里又体现出来了汉字的“优点”，英文里面，只要 order by 一下就会按 a-z 的顺序列出来了，汉字可不行，这样做顺序是打乱了，显示的效果也好一些了，不过缺点也显而易见：没有规律性。想找一个特定的tag比较困难。 再后台想到了按汉字的拼音排序的想法，搜索了一下，之前有收藏过一个函数可以把汉字转换为拼音的，原理是通过判断区位码的方法来实现简单的拼音转换的。在本地简单测试了一下，正要往上用的时候，又有麻烦了，原来这个转换是从gb2312到拼音的，乐铺上的用的编码是utf8格式的，死活转不过去。还好服务器有支持iconv函数，又通过 iconv 转换了一次，这才正常。 使用过程中发现存在的几点问题： 1.有很多生僻字都不能正确转换，好像只有国标里的汉字才可以； 2.多音字处理不好，有时候转换出来的拼音莫名其妙。 上面两点问题在应用中用其它办法弥补一下就可以了，等有更好的解决办法再说吧。嘿嘿！ 补充：后来在PHPCLASS发现了一个更强大的类，Chinese Text Conversion，乐铺现在用的就是这个类。有兴趣的朋友可以下来研究一下。 Related PostsApril 12, 2009 -- 乐铺新版上线November 2, 2008 -- 使用 Google 帐号来登录乐铺吧July 3, 2006 -- 404 模拟 URL [...]]]></description>
			<content:encoded><![CDATA[<p class='fp'>在解决<a href="http://www.loopo.cn">乐铺</a>的 tag 排序的问题上，碰到一点麻烦。原因出在乐铺的所有 tag 列表页：<a href="http://www.loopo.cn/tags/">http://www.loopo.cn/tags/</a></p>
<p>刚开始是按照 tag 数量的多少排序的，这样最简单，不过缺点就是没有“公平对待”每一个 tag，特别是用了 tag 云状显示结构以后，最大的 tag 在前面，最小的在后面，看起来很不舒服。</p>
<p>后台改成了按 tag 的 name 排序，在数据库中是直接 ORDER BY tagname 操作的，这里又体现出来了汉字的“优点”，英文里面，只要 order by 一下就会按 a-z 的顺序列出来了，汉字可不行，这样做顺序是打乱了，显示的效果也好一些了，不过缺点也显而易见：没有规律性。想找一个特定的tag比较困难。</p>
<p>再后台想到了按汉字的拼音排序的想法，搜索了一下，之前有收藏过一个函数可以<a href="http://www.phpe.net/articles/74.shtml">把汉字转换为拼音的</a>，原理是通过判断区位码的方法来实现简单的拼音转换的。在本地简单测试了一下，正要往上用的时候，又有麻烦了，原来这个转换是从gb2312到拼音的，乐铺上的用的编码是utf8格式的，死活转不过去。还好服务器有支持<a href="http://www.php.net/iconv">iconv</a>函数，又通过 iconv 转换了一次，这才正常。</p>
<p>使用过程中发现存在的几点问题：</p>
<ul>
<li>1.有很多生僻字都不能正确转换，好像只有国标里的汉字才可以；</li>
<li>2.多音字处理不好，有时候转换出来的拼音莫名其妙。</li>
</ul>
<p>上面两点问题在应用中用其它办法弥补一下就可以了，等有更好的解决办法再说吧。嘿嘿！</p>
<p><strong>补充：</strong>后来在<a href="http://www.phpclasses.org">PHPCLASS</a>发现了一个更强大的类，<a href="http://www.phpclasses.org/browse/package/1406.html">Chinese Text Conversion</a>，乐铺现在用的就是这个类。有兴趣的朋友可以下来研究一下。</p>
</p><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>April 12, 2009 -- <a href="http://avenger.name/blog/loopo20/" title="乐铺新版上线">乐铺新版上线</a></li><li>November 2, 2008 -- <a href="http://avenger.name/blog/loopo-for-google-accounts/" title="使用 Google 帐号来登录乐铺吧">使用 Google 帐号来登录乐铺吧</a></li><li>July 3, 2006 -- <a href="http://avenger.name/blog/404-rewrite/" title="404 模拟 URL Rewrite">404 模拟 URL Rewrite</a></li><li>April 10, 2006 -- <a href="http://avenger.name/blog/10-20/" title="1.0与2.0">1.0与2.0</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://avenger.name/blog/order-tag-by-pinyin/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
