<?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>Wordpress外贸企业主题, Wp企业主题, wordpress企业主题, wordpress主题定制,  PHP代码, ASP代码, 精选JS代码, WORDPRESS, 网站SEO,Flash焦点广告,JS焦点广告,CSS技巧 &#124; 九创主题 &#187; PHP</title>
	<atom:link href="http://www.3code.cn/phpcode/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.3code.cn</link>
	<description>Wordpress外贸企业主题, Wp企业主题, wordpress企业主题, wordpress主题定制,  PHP代码,ASP代码,精选JS代码,WORDPRESS,网站SEO,Flash焦点广告,JS焦点广告,CSS技巧</description>
	<lastBuildDate>Wed, 16 May 2012 03:22:51 +0000</lastBuildDate>
	<language>zh-cn</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>Shenzhen Web Design, China Web Design</title>
		<link>http://www.3code.cn/shenzhen-web-design-china-web-design/</link>
		<comments>http://www.3code.cn/shenzhen-web-design-china-web-design/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 16:28:27 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[China web design]]></category>
		<category><![CDATA[PSD 2 WordPress]]></category>
		<category><![CDATA[Shenzhen web design]]></category>
		<category><![CDATA[Shenzhen wordpress]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2988</guid>
		<description><![CDATA[a Shenzhen web design and development Designer, Shenzhen Web Design, China Web Design. WordPress Theme Design and develope business website with WordPress]]></description>
			<content:encoded><![CDATA[<p><strong>a Shenzhen web design and development Designer</strong></p>
<p><strong>Service:</strong></p>
<p>1. Web page design</p>
<p>2. PSD 2 Html</p>
<p>3. PSD 2 WordPress</p>
<p>4. WordPress Theme Design and develope business website with WordPress</p>
<p>5. PHP and ASP web develope</p>
<p>6. Domain Register,  Web Space (Host), Email System Services.</p>
<p><strong>Please visit <a title="Shenzhen Web Design, China Web Design" href="http://www.3code.cn/en">www.3code.cn/en</a> to find our projects!</strong></p>
<p><strong>If you would find a web designer in Shenzhen China, please contact me!</strong></p>
<p>Email: gbcxm@163.com<br />
MSN: gbcxxm@hotmail.com<br />
Skype: gbc0815</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/shenzhen-web-design-china-web-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP上传文件夹设置禁止执行脚本文件</title>
		<link>http://www.3code.cn/php%e4%b8%8a%e4%bc%a0%e6%96%87%e4%bb%b6%e5%a4%b9%e8%ae%be%e7%bd%ae%e7%a6%81%e6%ad%a2%e6%89%a7%e8%a1%8c%e8%84%9a%e6%9c%ac%e6%96%87%e4%bb%b6/</link>
		<comments>http://www.3code.cn/php%e4%b8%8a%e4%bc%a0%e6%96%87%e4%bb%b6%e5%a4%b9%e8%ae%be%e7%bd%ae%e7%a6%81%e6%ad%a2%e6%89%a7%e8%a1%8c%e8%84%9a%e6%9c%ac%e6%96%87%e4%bb%b6/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 08:22:07 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP图片上传]]></category>
		<category><![CDATA[PHP文件]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2866</guid>
		<description><![CDATA[只需要将上面的内容保存为.htaccess文件，并上传到想要禁止执行的文件夹内即可禁止执行.php.html.htm这三种类型的文件。]]></description>
			<content:encoded><![CDATA[<p>&lt;Files ~ ".php"&gt;<br />
Order allow,deny<br />
Deny from all<br />
&lt;/Files&gt;<br />
&lt;Files ~ ".html"&gt;<br />
Order allow,deny<br />
Deny from all<br />
&lt;/Files&gt;<br />
&lt;Files ~ ".htm"&gt;<br />
Order allow,deny<br />
Deny from all<br />
&lt;/Files&gt;</p>
<p>只需要将上面的内容保存为.htaccess文件，并上传到想要禁止执行的文件夹内即可禁止执行.php.html.htm这三种类型的文件。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php%e4%b8%8a%e4%bc%a0%e6%96%87%e4%bb%b6%e5%a4%b9%e8%ae%be%e7%bd%ae%e7%a6%81%e6%ad%a2%e6%89%a7%e8%a1%8c%e8%84%9a%e6%9c%ac%e6%96%87%e4%bb%b6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>非插件实现WordPress 的投稿功能</title>
		<link>http://www.3code.cn/%e9%9d%9e%e6%8f%92%e4%bb%b6%e5%ae%9e%e7%8e%b0wordpress-%e7%9a%84%e6%8a%95%e7%a8%bf%e5%8a%9f%e8%83%bd/</link>
		<comments>http://www.3code.cn/%e9%9d%9e%e6%8f%92%e4%bb%b6%e5%ae%9e%e7%8e%b0wordpress-%e7%9a%84%e6%8a%95%e7%a8%bf%e5%8a%9f%e8%83%bd/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 15:21:02 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress教程]]></category>
		<category><![CDATA[WORDPRESS主题技术]]></category>
		<category><![CDATA[wordpress投稿]]></category>
		<category><![CDATA[wordpress教程]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2742</guid>
		<description><![CDATA[我们都知道 WordPress 官方有一些关于投稿功能的插件，我了解过其中一些，很遗憾的是，大多都是英文的，对于国内用户并不是很便于管理，另一方面，插件毕竟有其局限性，不能个性化地针对主题进行定制。所以我还是选择了用非插件的方法，根据博客联盟的实际需求写了一个。方法如下：]]></description>
			<content:encoded><![CDATA[<p>我们都知道 <strong>WordPress</strong> 官方有一些关于投稿功能的插件，我了解过其中一些，很遗憾的是，大多都是英文的，对于国内用户并不是很便于管理，另一方面，插件毕竟有其局限性，不能个性化地针对主题进行定制。所以我还是选择了用非插件的方法，根据博客联盟的实际需求写了一个。方法如下：</p>
<p><strong>一、新建投稿页面模板</strong></p>
<p>和 <strong>WordPress</strong> 常规的新建页面模板一样，把主题的 page.php 另存为 tougao.php，并且在第一行的 &lt;?php 之后添加模板的标识注释：</p>
<div>/*<br />
Template Name: 投稿模板<br />
*/</div>
<p><strong>二、添加表单，在 the_content(); 函数下添加如下代码：</strong></p>
<div>&lt;form id="tougaoform" method="post" action="&lt;?php echo $_SERVER["REQUEST_URI"]; ?&gt;"&gt;<br />
        &lt;p&gt;&lt;input id="author" type="text" size="40" value="" name="tougao_authorname" /&gt;&lt;label&gt;昵称（*必填）&lt;/label&gt;&lt;/p&gt;<br />
        &lt;p&gt;&lt;input id="email" type="text" size="40" value="" name="tougao_authoremail" /&gt;&lt;label&gt;邮箱（*必填）&lt;/label&gt;&lt;/p&gt;<br />
        &lt;p&gt;&lt;input id="url" type="text" size="40" value="" name="tougao_authorblog" /&gt;&lt;label&gt;您的博客/文章来源&lt;/label&gt;&lt;/p&gt;<br />
        &lt;p&gt;&lt;input id="tougao_title" type="text" size="40" value="" name="tougao_title" /&gt;&lt;label&gt;文章标题（*必填）&lt;/label&gt;&lt;/p&gt;<br />
        &lt;p&gt;&lt;input id="tags" type="text" size="40" value="" name="tougao_tags" /&gt;&lt;label&gt;文章标签（多个标签请用英文逗号 , 分开）&lt;/label&gt;&lt;/p&gt;<br />
        &lt;p&gt;&lt;?php wp_dropdown_categories('show_option_none=请选择文章分类&amp;show_count=1&amp;hierarchical=1&amp;hide_empty=0'); ?&gt;&lt;label&gt;文章分类（*必填）&lt;/label&gt;&lt;/p&gt;<br />
        &lt;textarea rows="15" cols="55" id="tougao" name="tougao_content"&gt;&lt;/textarea&gt;<br />
        &lt;p&gt;<br />
        &lt;input type="hidden" value="send" name="tougao_form" /&gt;<br />
        &lt;input id="submit" type="submit" value="提交" /&gt;<br />
        &lt;input id="reset" type="reset" value="重填" /&gt;<br />
        &lt;/p&gt;<br />
&lt;/form&gt;</div>
<p><strong>三、在此新建的投稿页面中添加如下函数：</strong></p>
<div>if( isset($_POST['tougao_form']) &amp;&amp; $_POST['tougao_form'] == 'send'){<br />
    if ( isset($_COOKIE["tougao"]) &amp;&amp; ( time() - $_COOKIE["tougao"] ) &lt; 120 ){<br />
        wp_die('您投稿也太勤快了吧，先歇会儿！');<br />
    }<br />
    //表单变量初始化<br />
    $name = isset( $_POST['tougao_authorname'] ) ? $_POST['tougao_authorname'] : '';<br />
    $email = isset( $_POST['tougao_authoremail'] ) ? $_POST['tougao_authoremail'] : '';<br />
    $blog = isset( $_POST['tougao_authorblog'] ) ? $_POST['tougao_authorblog'] : '';<br />
    $title = isset( $_POST['tougao_title'] ) ? $_POST['tougao_title'] : '';<br />
    $tags = isset( $_POST['tougao_tags'] ) ? $_POST['tougao_tags'] : '';<br />
    $category = isset( $_POST['cat'] ) ? (int)$_POST['cat'] : 0;<br />
    $content = isset( $_POST['tougao_content'] ) ? $_POST['tougao_content'] : '';<br />
    //表单项数据验证<br />
    if ( empty($name) || strlen($name) &gt; 20 ){<br />
        wp_die('昵称必须填写，且不得超过20个长度');<br />
    }<br />
    if ( empty($email) || strlen($email) &gt; 60 || !preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $email)){<br />
        wp_die('邮箱必须填写，且不得超过60个长度，必须符合 Email 格式');<br />
    }<br />
    if ( empty($title) || strlen($title) &gt; 100 ){<br />
        wp_die('文章标题必须填写，且不得超过100个长度');<br />
    }<br />
    if ( empty($content) || strlen($content) &lt; 100){<br />
        wp_die('内容必须填写，且不得少于100个长度');<br />
    }<br />
    $tougao = array(<br />
        'post_title' =&gt; $title,                //标题<br />
        'post_content' =&gt; $content,            //内容<br />
        'post_status' =&gt; 'pending',            //待审<br />
        'tags_input' =&gt; $tags,                //标签<br />
        'post_category' =&gt; array($category)    //分类<br />
    );<br />
    //将文章插入数据库<br />
    $status = wp_insert_post( $tougao );<br />
    if ($status != 0){<br />
    /*<br />
        //将自定义域写入最新待审文章<br />
        global $wpdb;<br />
        $myposts = $wpdb-&gt;get_results("<br />
            SELECT ID<br />
            FROM $wpdb-&gt;posts<br />
            WHERE post_status = 'pending'<br />
            AND post_type = 'post'<br />
            ORDER BY post_date DESC<br />
        ");<br />
        add_post_meta($myposts[0]-&gt;ID, 'cbs_postauthor', $name);    //插入投稿人昵称的自定义域<br />
        if ( !empty($blog)) add_post_meta($myposts[0]-&gt;ID, 'cbs_posturl', $blog);    //插入投稿人网址的自定义域<br />
    */<br />
        setcookie("tougao", time(), time()+180);<br />
        wp_die('投稿成功！','投稿成功！');<br />
    } else {<br />
        wp_die('投稿失败！','投稿失败！');<br />
    }<br />
}</div>
<p>可以看到以上有一小段注释，是因为博客联盟有用到自定义域，为了兼容主题的相应函数，所以我特意加上了，如果你有同样的需要，去掉此注释就可以了。以上方法主要参考了露兜博客的《<strong>WordPress</strong> 添加投稿功能邮件通知》，我只是根据主题的特定需要稍作了修改，当然你也可以根据你的主题需要再作修改，这就是非插件的好处啦。提示一下，以上代码其实还可以作进一步的扩展，比如说在用户投稿成功之后，可以向管理员发出邮件通知，立马进行审核，这里就不多作说明了，有兴趣的朋友可以折腾一下。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/%e9%9d%9e%e6%8f%92%e4%bb%b6%e5%ae%9e%e7%8e%b0wordpress-%e7%9a%84%e6%8a%95%e7%a8%bf%e5%8a%9f%e8%83%bd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress插件开发API(Plugin)</title>
		<link>http://www.3code.cn/wordpress%e6%8f%92%e4%bb%b6%e5%bc%80%e5%8f%91apiplugin/</link>
		<comments>http://www.3code.cn/wordpress%e6%8f%92%e4%bb%b6%e5%bc%80%e5%8f%91apiplugin/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 09:44:36 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[wordpress 插件]]></category>
		<category><![CDATA[wordpress插件]]></category>
		<category><![CDATA[wordpress教程]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2738</guid>
		<description><![CDATA[WordPress插件开发API(Plugin)]]></description>
			<content:encoded><![CDATA[<h2>Plugin API</h2>
<h3>介绍</h3>
<p>本文当主要介绍<a title="WP" href="http://wordpress.org/">WordPress</a>插件开发者可以使用的API Hook，以及如何使用它们。</p>
<p>本文假设您已经阅读了《<a title="Writing a Plugin" href="http://codex.wordpress.org/Writing_a_Plugin">Writing a Plugin</a>》（这篇文章概览了如何写一个插件）。本文主要介绍API Hook，也称作Filter和Action，<a title="WP" href="http://wordpress.org/">WordPress</a>使用这些函数来使您的插件起作用。</p>
<p>注意：本文的内容适用于WordPress1.2+。</p>
<p>&nbsp;</p>
<h3>Hook，Action和Filter</h3>
<p>Hook是<a title="Becoming Charles-WP" href="http://sexywp.com/cata/wp">WordPress</a>提供的一种机制，帮助您将您的插件加入到<a title="WP" href="http://wordpress.org/">WordPress</a>中；也即，在您的插件中，通过调用一些系统函数，使得您的插件可以运作起来。一共有两种Hook：</p>
<ol>
<li>Action：Action是<a title="WP" href="http://wordpress.org/">WordPress</a>内核在运行到某个特定的点的，或者某个特定的事件发生的时候执行的。您可以通过使用Action API让您的插件中的一个或者多个函数在这些特定的点执行。</li>
<li>Filter：Filter是<a title="Becoming Charles-WP" href="http://sexywp.com/cata/wp">WordPress</a>在将一段文本加入到数据库，或者发送给浏览器之前处理不同种类的文本用的。您的插件可以通过使用Filter API，让一个或者多个函数在这些时刻运行，以处理特定类型的文本。</li>
</ol>
<p>有的时候，您可以使用Action和Filter达到相同的目的。比如说，您希望你的插件可以更改一段日志的文本，您可能会往<code>publish_post</code>中添加一个Action函数（这段文字在被加入到数据库之前被修改了），或者往 <code>the_content</code>中添加一个Filter函数（这段文字在被发送给浏览器显示之前，被更改了）。</p>
<h3>Action</h3>
<p>Action由<a title="Becoming Charles-WP" href="http://sexywp.com/tags/wordpress">WordPress</a>中发生的一些特定的事件所触发，比如发布一篇日志，更改主题，或者在管理面板显示一个页面。您的插件可以通过执行一个PHP函数来响应事件，实现以下几个目的：</p>
<ul>
<li>修改数据库数据</li>
<li>发送Email信息</li>
<li>修改将要在浏览器上呈现的内容（管理员看到的或者访客看到的）</li>
</ul>
<p>要达到上述的目的，需要遵循的步骤为（下文有详细的描述）：</p>
<ol>
<li>在您的插件文件中，创建一个在某个事件发生时，需要运行的PHP函数。</li>
<li>通过调用<code>add_action</code>函数，将您的函数插入到<a title="WP" href="http://wordpress.org/">WordPress</a>中。</li>
<li>将您的插件文件放到插件目录下，然后激活它。</li>
</ol>
<h4>创建一个Action 函数</h4>
<p>在您的插件中创建一个Action的第一个步骤是创建一个能响应Action的函数，并且将它写入到您的插件文件里（您的插件文件最后会被放到<em>content/plugins</em>目录）。举个例子，如果您想要您的朋友在您发表了新文章的时候收到一封邮件，您可以创建下述函数：</p>
<p><code><br />
function email_friends($post_ID) {<br />
$friends = ‘bob@example.org,susie@example.org’;<br />
mail($friends, "sally’s blog updated",<br />
‘I just put something on my blog: http://blog.example.com’);<br />
return $post_ID;<br />
}<br />
</code></p>
<p>对于大多数的Action来说，您的函数要接受一个单一参数（通常是日志或这评论的ID，这要视情况而定）。有些Action接受多于一个的参数， 您可以查看WordPress的Action文档，或者直接查看WordPress源代码来取得第一手资料。除了一个参数外，您还可以访问 WordPress的全局变量，并且调用其他WordPress函数或者您插件中的其他函数（或者其他插件中的函数）。</p>
<p><strong>注意</strong>：您要始终留意，是否WordPress本身或者其他的插件已经使用了您想用的那个函数的名字。关于这点，您可以查看<a title="Avoiding Function Name Collisions" href="http://codex.wordpress.org/Writing_a_Plugin#Avoiding_Function_Name_Collisions">避免函数名冲突</a>这篇文章来获取更详细的信息。</p>
<h4>Hook到WordPress</h4>
<p>当您定义好您的函数后，下一步就是将您的函数Hook或者注册到WordPress中。在您的插件文件中的全局空间中调用函数 add_action()就可以了：</p>
<pre>add_action(’hook_name’, ‘your_filter’, [priority], [accepted_args]);</pre>
<p>该函数中：</p>
<ul>
<li><code>hook_name</code>是WordPress提供的供hook用的函数名，也即您的函数将关联到的事件的名称。</li>
<li><code>your_function_name</code> 是您希望在<code>hook_name</code>指定的事件发生时执行的函数的名称。这可以是一个在WordPress中定义好的标准的函数，也可以是一个您自己定义的函数（比如上面提到的<code>email_friends</code>）</li>
<li><code>priority</code>是一个可选的整型参数，可以指定可以指定关联到某个特定的函数的执行顺序。默认值是10。数字较小的执行较早，如果优先级相同，则按照他们hook进来的顺序先后来执行。</li>
<li><code>accepted_args</code>是一个可选的整型参数，它定义了您的函数可以接受多少个参数，默认是1。这个参数很有用，因为有些事件发生的时候，可能会向您的函数传递多于一个的参数。这个参数是从WordPress 1.5.1后的版本才开始有的。</li>
</ul>
<p>继续前文的例子，我们可以将下面一行代码加入到插件的文件中：</p>
<pre>add_filter(’comment_text’,'filter_profanity’);</pre>
<p>相似的，您也可以将一个函数从Action中移除。你可以参考移除Action来获得详细的信息。</p>
<h4>安装和激活</h4>
<p>让您的插件奏效的最后一个步骤就是安装和激活和插件了。您写好的函数和对add_action的调用，必须放到同一个文件中，插件文件必须被装到wp-content/plugins目录中。一旦插件安装好，您需要访问管理面板来激活您的插件。</p>
<h4>目前已有的Action Hook</h4>
<p>参见<a title="Plugin API Action Reference" href="http://codex.wordpress.org/Plugin_API/Action_Reference">Plugin API/Action Reference</a>来查看WordPress中的当前的Action列表。</p>
<h3>Filter</h3>
<p>Filter是在WordPress执行过程中，传递数据时，在对数据采取某种行动（将数据写入到数据库或者发送给访客的浏览器）之前执行的。（当 WordPress生成页面时）Filter就位于数据库和浏览器之间，（当WordPress向数据库添加日志和评论时）Filter就位于浏览器和数 据库之间。WordPress中的绝大多数的输入和输出过程都要通过至少一个Filter。WordPress自己有一些默认的Filter，您可以在插 件中使用自己的Filter。</p>
<p>将您自己的Filter添加到WordPress中，遵循以下几个步骤：</p>
<ul>
<li>创建一个PHP函数来过滤数据。</li>
<li>通过调用add_filter将这个Filter添加到WordPress中。</li>
<li>将您的PHP函数写入到一个插件文件中，激活它。</li>
</ul>
<h4>创建一个Filter函数</h4>
<p>一个Filter函数把未经修改的数据作为输入，返回修改过的数据（或者有的时候返回的空值，表明这些数据应该被删除）。如果您的Filter没有修改数据，那么原始的数据必须被返回回去，以便于后续的插件可以继续它们的修改工作。</p>
<p>所以，在您的插件中创建一个Filter的第一步，就是创建一个PHP函数来执行过滤动作，并且，将这个函数写入到您的插件文件中去。再举个例子， 如果您需要确定您的日志或者评论中没有出现违禁词汇，您可以定义一个全局变量，里面包含了全部的违禁词汇的列表，然后创建下面的PHP函数：</p>
<p><code><br />
function filter_profanity($content) {<br />
global $profanities;<br />
foreach($profanities as $profanity) {<br />
$content=str_ireplace($profanity,’{censored}’,$content);<br />
}<br />
return $content;<br />
}<br />
</code></p>
<p>注意：同样要小心您的函数的命名，不要和其他的WordPress函数和其他插件的函数冲突。</p>
<h4>将您的Filter Hook到WordPress</h4>
<p>在您的函数定义完毕后，下一步就是将您的函数"hook"或者说注册到WordPress中。在您的插件文件中，调用add_filter函数：</p>
<p><code><br />
add_filter(’hook_name’, ‘your_filter’, [priority], [accepted_args]);<br />
</code></p>
<p>其中：</p>
<ul>
<li><code>hook_name</code> 是WordPress提供的供hook的函数的名称，定义了您可以加入您自己的Filter的插入点。</li>
<li><code>your_filter</code>是您的filter函数的名称。这个函数可以是一个WordPress标准PHP函数，也即在WordPress内核中定义的函数，也可以使一个您自己定义的函数。</li>
<li><code>priority</code>是一个可选的整型参数，标明了注册到某个特定的filter中的函数的执行顺序。默认是10。较小的数字执行时较靠前。如果priority值相同，那么按照注册的先后顺序来执行。</li>
<li><code>accepted_args</code>是一个可选参数，用来标明您的函数能够接受的参数的个数，默认是1，某些hook可以像您的函数传递超过一个的参数。</li>
</ul>
<p>继续上面的例子，您可以使用下面的代码，让WordPress过滤您评论中的违禁词汇：</p>
<p><code><br />
add_filter(’comment_text’,'filter_profanity’);<br />
</code></p>
<p>您也可以使用<code>remove_filter()</code>函数来将一个Filter移除。</p>
<h4>安装和激活</h4>
<p>最后一个步骤就是使您的filter运作起来。你需要做的就是将您的插件文件放到<em><a title="标签 WordPress 下的日志" rel="tag" href="http://sexywp.com/tags/wordpress">wordpress</a>/plugins</em>目录，然后到后台管理界面激活。</p>
<h4>目前WordPress中可以注册的Filter</h4>
<p>参见Plugin API/Filter Reference。</p>
<h4>例子</h4>
<p>下面是一个例子，是Ozh曾经在邮件列表中描述过的，该插件修改（或者说覆盖）了默认的<code>bloginfo()</code>函数。这需要修改内核函数的行为。</p>
<p><code><br />
add_filter(’bloginfo’, ‘mybloginfo’, 1, 2);<br />
add_filter(’bloginfo_url’, ‘mybloginfo’, 1, 2);</code></p>
<p><code> </code></p>
<p><code>function mybloginfo($result=”, $show=”) {<br />
switch ($show) {<br />
case ‘wpurl’:<br />
$result = SITE_URL;<br />
break;<br />
case ‘template_directory’:<br />
$result = TEMPL_DIR;<br />
break;<br />
default:<br />
}<br />
return $result;<br />
}<br />
</code></p>
<h3>移除Action和Filter</h3>
<p>在某些情况下，您可能会发现，您的插件需要禁用WordPress中的内建Action或者Filter之一，或者某个其它插件添加的函数。您可以通过调用<code>remove_filter(’filter_hook’,'filter_function’)</code>或者 <code>remove_action(’action_hook’,'action_function’)</code>来达到目的。</p>
<p>比如，<code>remove_action(’publish_post’,'generic_ping’);</code>可以在您发表日志的时候，阻止您的博客向外发送ping。</p>
<p>注意，如果一个hook不是使用默认的优先级（priority）注册到系统中，那么您必须在<code>remove_action()</code>中指定那个hook使用的优先级。一般来说还要注意，除非您很清楚那个函数在干什么并且为什么要那么做，请不要移除任何函数。</p>
<h3>缺省加载的Filter和Action</h3>
<p>最可靠的获知WordPress缺省加载了哪些Filter和Action的方法就是在其源代码中搜索<code>add_filter</code>和<code>add_action</code>函数的调用。</p>
<h4>WordPress 2.1</h4>
<p>在WordPress2.1中，绝大多数的Filter和Action的加载是在<em>wp-include/default-filters.php</em>文件中进行的。其他的在下列的文件中加载：</p>
<ul>
<li><tt>wp-admin/admin-ajax.php</tt></li>
<li><tt>wp-admin/admin-functions.php</tt></li>
<li><tt>wp-admin/custom-header.php</tt></li>
<li><tt>wp-admin/edit.php</tt></li>
<li><tt>wp-admin/index.php</tt></li>
<li><tt>wp-admin/options-permalink.php</tt></li>
<li><tt>wp-admin/upload-functions.php</tt></li>
<li><tt>wp-admin/upload.php</tt></li>
<li><tt>wp-includes/bookmark.php</tt></li>
<li><tt>wp-includes/general-template.php</tt></li>
<li><tt>wp-includes/kses.php</tt></li>
<li><tt>wp-includes/plugin.php</tt></li>
<li><tt>wp-includes/rewrite.php</tt></li>
<li><tt>wp-includes/template-loader.php</tt></li>
<li><tt>wp-includes/theme.php</tt></li>
</ul>
<h4>WordPress 2.5</h4>
<p>(以后我会完善这个部分)</p>
<h3>您可以覆盖的函数</h3>
<p>除了使用hook（action和filter），另一个插件修改Wordpress行为方式是覆盖WordPress的函数。实际上，有一小组函 数，是WordPess希望被插件覆盖的。在所有的插件都已经启动后，如果他们还没有被覆盖的话，WordPress才启动这些函数。</p>
<p>这些函数在<em>wp-include/pluggable.php</em>文件中定义。这里有一个列表（WP2.1）。</p>
<ul>
<li><tt>set_current_user</tt></li>
<li><tt>wp_set_current_user</tt></li>
<li><tt>wp_get_current_user</tt></li>
<li><tt>get_currentuserinfo</tt></li>
<li><tt>get_userdata</tt></li>
<li><tt>update_user_cache</tt></li>
<li><tt>get_userdatabylogin</tt></li>
<li><tt>wp_mail</tt></li>
<li><tt>wp_login</tt></li>
<li><tt>is_user_logged_in</tt></li>
<li><tt>auth_redirect</tt></li>
<li><tt>check_admin_referer</tt></li>
<li><tt>wp_redirect</tt></li>
<li><tt>wp_get_cookie_login</tt></li>
<li><tt>wp_setcookie</tt></li>
<li><tt>wp_clearcookie</tt></li>
<li><tt>wp_notify_postauthor</tt></li>
<li><tt>wp_notify_moderator</tt></li>
<li><tt>wp_new_user_notification</tt></li>
<li><tt>wp_verify_nonce</tt></li>
<li><tt>wp_create_nonce</tt></li>
<li><tt>wp_salt</tt></li>
<li><tt>wp_hash</tt></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/wordpress%e6%8f%92%e4%bb%b6%e5%bc%80%e5%8f%91apiplugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP批量上传图片的实例教程</title>
		<link>http://www.3code.cn/php%e6%89%b9%e9%87%8f%e4%b8%8a%e4%bc%a0%e5%9b%be%e7%89%87%e7%9a%84%e5%ae%9e%e4%be%8b%e6%95%99%e7%a8%8b/</link>
		<comments>http://www.3code.cn/php%e6%89%b9%e9%87%8f%e4%b8%8a%e4%bc%a0%e5%9b%be%e7%89%87%e7%9a%84%e5%ae%9e%e4%be%8b%e6%95%99%e7%a8%8b/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 07:10:50 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP图片上传]]></category>
		<category><![CDATA[php批量上传图片]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2723</guid>
		<description><![CDATA[批量上传图片，一次性上传图片，下面是实例:]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.moldchina.org/" target="_blank">China Mould suppliers of Mould, plastic injection molding,China Mould exporter of Mould, injection molding company,</a><br />
<a href="http://www.moldchina.org/" target="_blank">china mould makers,china plastic injection molding, china injection molding company</a><br />
<a href="http://www.9cweb.com/" target="_blank">深圳外贸网站建设, wordpress企业主题, 深圳网页设计</a><br />
<a href="http://www.peony-flowers.com/" target="_blank">Peony, Peony picture, Yellow peony</a></p>
<p>批量上传图片，一次性上传图片，下面是实例:</p>
<blockquote><p>代码：<br />
&lt;html&gt;<br />
&lt;head&gt;&lt;title&gt;upload picture more once&lt;/title&gt;&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;form action="" method="post" enctype="multipart/form-data"&gt;<br />
&lt;p&gt;Pictures:&lt;br /&gt;<br />
&lt;input type="file" name="pictures[]" /&gt;&lt;br /&gt;<br />
&lt;input type="file" name="pictures[]" /&gt;&lt;br /&gt;<br />
&lt;input type="file" name="pictures[]" /&gt;&lt;br /&gt;<br />
&lt;input type="submit" name="upload" value="Send" /&gt;<br />
&lt;/p&gt;<br />
&lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
&lt;?php<br />
if($_POST['upload']=='Send'){<br />
$dest_folder = "picture/";<br />
if(!file_exists($dest_folder)){<br />
mkdir($dest_folder);<br />
}<br />
foreach ($_FILES["pictures"]["error"] as $key =&gt; $error) {<br />
if ($error == UPLOAD_ERR_OK) {<br />
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];<br />
$name = $_FILES["pictures"]["name"][$key];<br />
$uploadfile = $dest_folder.$name;<br />
move_uploaded_file($tmp_name, $uploadfile);<br />
}<br />
}<br />
}<br />
?&gt;</p></blockquote>
<p>可以试一下。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php%e6%89%b9%e9%87%8f%e4%b8%8a%e4%bc%a0%e5%9b%be%e7%89%87%e7%9a%84%e5%ae%9e%e4%be%8b%e6%95%99%e7%a8%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php防采集代码</title>
		<link>http://www.3code.cn/php%e9%98%b2%e9%87%87%e9%9b%86%e4%bb%a3%e7%a0%81/</link>
		<comments>http://www.3code.cn/php%e9%98%b2%e9%87%87%e9%9b%86%e4%bb%a3%e7%a0%81/#comments</comments>
		<pubDate>Tue, 31 May 2011 06:08:55 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php防采集]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2690</guid>
		<description><![CDATA[&#60;?php $HTTP_REFERER = $_SERVER["HTTP_REFERER"]; $HTTP_USER_AGENT = $_SERVER["HTTP_USER_AGENT"]; $SERVER_NAME = $_SERVER["SERVER_NAME"]; $CompCharArr = explode(",","Baiduspider,Scooter,ia_archiver,Googlebot,FAST-WebCrawler,MSNBOT,Slurp"); $CompCharArrSize = sizeof($CompCharArr); $CheckSign = ""; for($i=0;$i&#60;$CompCharArrSize;$i++) { $ComChar = trim($CompCharArr[$i]); if($CompChar&#60;&#62;"" &#38;&#38; eregi($CompChar,$HTTP_USER_AGENT)) { $CheckSign = "T"; } } $SERVER_NAME_M = "http://".$SERVER_NAME;//strlen $EndLenth = strlen($SERVER_NAME_M) + 1; $CompServerName = "http://".$SERVER_NAME."/"; if(empty($CheckSign) &#38;&#38; ($HTTP_REFERER == "" or substr($HTTP_REFERER,0,$EndLenth) &#60;&#62; $CompServerName )) { [...]]]></description>
			<content:encoded><![CDATA[<p>&lt;?php<br />
$HTTP_REFERER = $_SERVER["HTTP_REFERER"];<br />
$HTTP_USER_AGENT = $_SERVER["HTTP_USER_AGENT"];<br />
$SERVER_NAME = $_SERVER["SERVER_NAME"];<br />
$CompCharArr = explode(",","Baiduspider,Scooter,ia_archiver,Googlebot,FAST-WebCrawler,MSNBOT,Slurp");<br />
$CompCharArrSize = sizeof($CompCharArr);<br />
$CheckSign = "";<br />
for($i=0;$i&lt;$CompCharArrSize;$i++)<br />
{<br />
$ComChar = trim($CompCharArr[$i]);<br />
if($CompChar&lt;&gt;"" &amp;&amp; eregi($CompChar,$HTTP_USER_AGENT))<br />
{<br />
$CheckSign = "T";<br />
}<br />
}<br />
$SERVER_NAME_M = "http://".$SERVER_NAME;//strlen<br />
$EndLenth = strlen($SERVER_NAME_M) + 1;<br />
$CompServerName = "http://".$SERVER_NAME."/";<br />
if(empty($CheckSign) &amp;&amp; ($HTTP_REFERER == "" or substr($HTTP_REFERER,0,$EndLenth) &lt;&gt; $CompServerName ))<br />
{<br />
?&gt;<br />
&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;form action='' name=checkrefer id=checkrefer method=post&gt;&lt;/form&gt;<br />
&lt;script&gt;<br />
document.all.checkrefer.action=document.URL;<br />
document.all.checkrefer.submit();&lt;/script&gt;<br />
&lt;/body&gt;&lt;/html&gt;<br />
&lt;?php }?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php%e9%98%b2%e9%87%87%e9%9b%86%e4%bb%a3%e7%a0%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wordpress电子产品主题</title>
		<link>http://www.3code.cn/wordpress%e7%94%b5%e5%ad%90%e4%ba%a7%e5%93%81%e4%b8%bb%e9%a2%98/</link>
		<comments>http://www.3code.cn/wordpress%e7%94%b5%e5%ad%90%e4%ba%a7%e5%93%81%e4%b8%bb%e9%a2%98/#comments</comments>
		<pubDate>Wed, 18 May 2011 12:30:04 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[主题定制案例]]></category>
		<category><![CDATA[wordpress主题定制]]></category>
		<category><![CDATA[WORDPRESS主题技术]]></category>
		<category><![CDATA[wordpress企业主题]]></category>
		<category><![CDATA[wordpress公司主题]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2612</guid>
		<description><![CDATA[wordpress企业主题定制, wordpress主题定制]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.3code.cn/download/2011/05/wordpress-theme-design-8x.jpg" alt="wordpress企业主题定制, wordpress主题定制" title="wordpress企业主题定制, wordpress主题定制" width="0" height="0" class="alignnone size-full wp-image-2614" /><img src="http://www.3code.cn/download/2011/05/wordpress-theme-design-8d.jpg" alt="wordpress企业主题定制, wordpress主题定制" title="wordpress企业主题定制, wordpress主题定制" width="720" height="481" class="alignnone size-full wp-image-2613" /></p>
<p><a href="http://www.a-tops.com/" target="_blank">>>访问该网站</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/wordpress%e7%94%b5%e5%ad%90%e4%ba%a7%e5%93%81%e4%b8%bb%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>数据库Mysql优化技巧常用方法</title>
		<link>http://www.3code.cn/%e6%95%b0%e6%8d%ae%e5%ba%93mysql%e4%bc%98%e5%8c%96%e6%8a%80%e5%b7%a7%e5%b8%b8%e7%94%a8%e6%96%b9%e6%b3%95/</link>
		<comments>http://www.3code.cn/%e6%95%b0%e6%8d%ae%e5%ba%93mysql%e4%bc%98%e5%8c%96%e6%8a%80%e5%b7%a7%e5%b8%b8%e7%94%a8%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Mon, 16 May 2011 05:03:54 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2595</guid>
		<description><![CDATA[满足GROUP BY子句的最一般的方法是扫描整个表并创建一个新的临时表，表中每个组的所有行应为连续的，然后使用该临时表来找到组并应用累积函数(如 果有)。在某些情况中，MySQL能够做得更好，通过索引访问而不用创建临时表。数据库Mysql索引优化是数据库优化技巧常用的重要方法。]]></description>
			<content:encoded><![CDATA[<p>Mysql数据库优化技巧有很多，这里摘抄了一些许多程序员常用的Mysql优化方法，供参考及备忘。</p>
<h3>1. MySQL优化WHERE子句</h3>
<p>下面以SELECT语句为例，不过DELETE和UPDATE语句中的WHERE子句优化和这里SELECT  语句的Mysql优化技巧一样，下面只列出了一部分的MYSQL 优化方法实例。</p>
<p>减少括号嵌套：</p>
<pre>WHERE ((a AND b) AND c OR (((a AND b) AND (c AND d))))
优化-&gt; WHERE (a AND b AND c) OR (a AND b AND c AND d)</pre>
<p>常量重叠，去除不必要的常量：</p>
<pre>(a&lt;b AND b=c) AND a=5 AND (5=5)
优化-&gt; b&gt;5 AND b=c AND a=5</pre>
<p>如果不使用GROUP BY或分组函数(COUNT()、MIN()……)，HAVING与WHERE合   并。所有常数的表在查询中比其它表先读出。常数表为：1. 空表或只有1行的表; 2. 与在一个PRIMARY   KEY或UNIQUE索引的WHERE子句一起使用的表，这里所有的索引 部分使用常数表达式并且索引部分被定义为NOT NULL。</p>
<div><a title="34 topics" href="http://www.moldchina.org/tag/china-injection-mold-manufacturer">china injection mold manufacturer</a> <a title="29 topics" href="http://www.moldchina.org/tag/china-injection-mold">China Injection Mould</a> <a title="25 topics" href="http://www.moldchina.org/tag/china-mold-factory">china mold factory</a> <a title="39 topics" href="http://www.moldchina.org/tag/china-mold-makers">china mold maker</a> <a title="23 topics" href="http://www.moldchina.org/tag/china-mold-supplier">china mold supplier</a> <a title="23 topics" href="http://www.moldchina.org/tag/china-mould-maker">China Mould maker</a> <a title="10 topics" href="http://www.moldchina.org/tag/china-tooling-maker">china tooling maker</a> <a title="20 topics" href="http://www.moldchina.org/tag/toolmaker-china">China toolmaker</a> <a title="2 topics" href="http://www.moldchina.org/tag/in-china">in china</a> <a title="30 topics" href="http://www.moldchina.org/tag/plastic-injection-molding">plastic injection molding</a> <a title="41 topics" href="http://www.moldchina.org/tag/plastic-mould-china">plastic mould china</a> <a title="13 topics" href="http://www.moldchina.org/tag/china-prototype-parts">Prototype parts</a></div>
<h3><strong><strong>2. Mysql 优化</strong></strong><strong>避免SELECT *命令</strong></h3>
<p>从表中读取越多的数据，查询会变得更慢。始终指定你需要的列，这是一个非常良好的习惯。</p>
<pre>
<ol>
<li>$r = mysql_query("SELECT * FROM user WHERE user_id = 1");</li>
<li>$d = mysql_fetch_assoc($r);</li>
<li>echo "Welcome {$d['username']}";</li>
<li>// 优化如下:</li>
<li>$r = mysql_query("SELECT username FROM user WHERE user_id = 1");</li>
<li>$d = mysql_fetch_assoc($r);</li>
<li>echo "Welcome {$d['username']}";</li>
</ol>
</pre>
<h3>3. MySQL 如何优化DISTINCT 语句</h3>
<p>在大多数情况下，DISTINCT子句可以视为GROUP BY的特殊情况。例如，下面的两个数据库查询是等效的：</p>
<p>SELECT DISTINCT c1, c2, c3 FROM t1 WHERE c1 &gt; <em>const</em>;<br />
SELECT c1, c2, c3 FROM t1 WHERE c1 &gt; <em>const</em> GROUP BY c1, c2,  c3;</p>
<p>由于这个等效性，适用于GROUP  BY查询的优化技巧和方法也适用于有DISTINCT子句的查询。</p>
<h3><strong>4. 优化MySQL查询缓存</strong></h3>
<p>MySQL查询可以启用高速查询缓存。这是提高数据库性能的有效Mysql优化方法之一。当同一个查询被执行多次时，从缓存中提取数据和直接从数据库中返回数据快很多，小小的Mysql优化技巧。</p>
<pre>
<ol>
<li>// query cache does NOT <strong>work</strong></li>
<li>$r = mysql_query("SELECT username FROM user WHERE signup_date &gt;= CURDATE()");</li>
<li>// query cache works!</li>
<li>$today = <strong>date</strong>("Y-m-d");</li>
<li>$r = mysql_query("SELECT username FROM user WHERE signup_date &gt;= '$today'");</li>
<li>// query cache does NOT <strong>work</strong></li>
<li>$r = mysql_query("SELECT username FROM user WHERE signup_date &gt;= CURDATE()");</li>
<li>// query cache works!</li>
<li>$today = <strong>date</strong>("Y-m-d");</li>
<li>$r = mysql_query("SELECT username FROM user WHERE signup_date &gt;= '$today'");</li>
</ol>
</pre>
<h3><strong><strong>5. Mysql 优化：</strong></strong><strong>用EXPLAIN优化SELECT查询</strong></h3>
<p>使用EXPLAIN关键字是另一个MySQL优化技巧，了解MySQL正在进行什么样的数据库查询操作。</p>
<p>实现一个SELECT查询（最好是比较复杂的一个，带joins方式的），在里面添加上你的关键词解释，在这里我们可以使用phpMyAdmin， 他会告诉你表中的结果。举例来说，假如当我在执行joins时，正忘记往一个数据库索引中添加列，EXPLAIN能帮助我找到问题的所在。</p>
<div>
<div>
<div>
<div>
<h3>6. MySQL如何优化ORDER BY</h3>
</div>
</div>
</div>
<p>MySQL可以使用一个索引来满足ORDER  			BY子句，而不需要额外的排序。下面看看ORDER BY 优化技巧和方法。</p>
<p>即使ORDER  			BY不确切匹配索引，只要WHERE子句中的所有未使用的索引部分和所有额外的ORDER  			BY  列为常数，就可以使用索引。在某些情况下，MySQL<em>不能</em>使用索引来解决ORDER  			 BY，尽管它仍然行使用索引来找到匹配WHERE子句。如：</p>
<p>对不同的关键字使用ORDER  			BY：SELECT * FROM t1 ORDER BY <em>key1</em>, <em>key2；</em></p>
<p>对关键字的非连续元素使用ORDER  			BY：SELECT * FROM t1 WHERE <em>key2</em>=<em>constant</em> ORDER BY <em>key_part2</em>；</p>
<p>混合ASC和DESC：SELECT * FROM t1 ORDER BY <em>key_part1</em> DESC, <em>key_part2</em> ASC；</p>
<p>用于查询行的关键字与ORDER BY中所使用的不相同：SELECT * FROM t1 WHERE <em>key2</em>=<em>constant</em> ORDER BY <em>key1</em>；</p>
<p>联接许多表，并且ORDER BY中的列并不是全部来自第1个 用于搜索行的非常量表。(这是EXPLAIN输出中的没有const联  接类型的第1个表）。</p>
<p>有不同的ORDER  			BY和GROUP  			BY表达式。</p>
<p>使用的表索引的类型不能按顺序保存行。例如，对于HEAP表的HASH索 引情况即如此。</p>
<p>通过EXPLAIN  			SELECT …ORDER BY，可以检查MySQL是否可以使用索引来解决查询。</p>
<p>文件排序优化不仅用于记录排序关键字和行的位置，并且还记录数据库查询需要的列。这样可以避免两次读取行。</p>
</div>
<h3><strong><strong>7. Mysql 优化</strong></strong><strong>：使用LIMIT 1取得唯一行</strong></h3>
<p>有时，当你要查询一张表是，你知道自己只需要看一行。你可能会去的一条十分独特的记录，或者只是刚好检查了任何存在的记录数，他们都满足了你的  WHERE子句。增加一个LIMIT  1会令你的查询更加有效，这个方法是Mysql优化很有效的一个技巧。这样数据库引擎发现只有1后将停止扫描，而不是去扫描整个表或索引。</p>
<pre>
<ol>
<li>$r = mysql_query("SELECT * FROM user WHERE state = 'Alabama'")</li>
<li>$r = mysql_query("SELECT 1 FROM user WHERE state = 'Alabama' LIMIT 1");</li>
</ol>
</pre>
<h3>8. MySQL如何优化 LIMIT</h3>
<p>使用LIMIT <em>row_count</em>而不使用HAVING时，<strong>MySQL</strong>将 以不同方式处理数据库查询。</p>
<p>如果你用LIMIT只选择一些行，当<strong>MySQL选 择</strong>做完整的表扫描时，它将在一些情况下使用索引，涉及到Mysql索引优化。</p>
<p>如果你使用LIMIT <em>row_count</em>与ORDER  			BY，<strong>MySQL</strong>一旦找到了排序结果的第一个<em>row_count</em>行，  将结束排序而不是排序整个表。如果使用索引，将很快。如果必须进行文件排序（filesort），必须选择所有匹配查询没有LIMIT子  句的行，并且在确定已经找到第1个<em>row_count</em>行  前，必须对它们的大部分进行排序。在任何一种情况下，一旦找到了行，则不需要再排序结果的其它部分，并且MySQL不再进行排 序。</p>
<p>当结合LIMIT <em>row_count</em>和DISTINCT时，<strong>MySQL</strong>一旦找到<em>row_count</em>个  唯一的行，它将停止。</p>
<p>在一些情况下，GROUP  			BY能通过顺序读取键(或在键上做排序)来解决，然后计算摘要直到关键字的值 改变。在这种情况下，LIMIT  			<em>row_count</em>将不计算任何不必要的GROUP  			BY值。</p>
<p>只要MySQL已经发送了需要的行数到客户，它将放弃查询，除非你正使用SQL_CALC_FOUND_ROWS。</p>
<p>LIMIT  			0将总是快速返回一个空集合。这对检查数据库查询的有效性是有用的。当使用MySQL  			  API时，它也可以用来得到结果列的列类型。(该mysql优化技巧在MySQL  			Monitor中不工作，只显示Empty  set；应使用SHOW  		 	COLUMNS或DESCRIBE）。</p>
<p>当服务器使用临时表来进行查询时，使用LIMIT 			<em>row_count</em>子句来计算需要多少空间。</p>
<h3><strong><strong>9. Mysql 优化</strong></strong><strong>：保证连接的索引是相同的类型</strong></h3>
<p>如果应用程序中包含多个连接查询，你需要确保你链接的列在两边的数据库表上都被索引。这会影响MySQL如何优化内部联接操作。此外，加入的列，必须是同一类型。例如，你加入一个DECIMAL列，而同时加入另一个表中的int列，MySQL将无法使用其中至少一个 指标。这种方法即使字符编码必须同为字符串类型。</p>
<pre>
<ol>
<pre>
<li>// looking <strong>for</strong> companies in my state</li>
<li>$r = mysql_query("<strong>SELECT</strong> company_name <strong>FROM</strong> users</li>
<li>    LEFT JOIN companies <strong>ON</strong> (users.state = companies.state)</li>
<li>    <strong>WHERE</strong> users.id = $user_id")</li>
<li>// both state columns should be indexed</li>
<li>// and they both should be the same type and <strong>character</strong> encoding</li>
<li>// or MySQL might do <strong>full</strong> <strong>table</strong> scans</li>
</pre>
</ol>
</pre>
<h3><strong><strong>10. Mysql 优化</strong></strong><strong>避免使用BY RAND()命令</strong></h3>
<p>若需要随机显示结果，MySQL可能 会为表中每一个独立的行执行数据库BY RAND()命令（这会消耗处理器的处理能力，不利于Mysql数据库优化），这种方法然后给你仅返回一行。</p>
<pre>
<ol>
<li>$r = mysql_query("SELECT username FROM user ORDER BY RAND() LIMIT 1");</li>
<li>// Mysql 优化如下:</li>
<li>$r = mysql_query("SELECT count(*) FROM user");</li>
<li>$d = mysql_fetch_row($r);</li>
<li>$rand = mt_rand(0,$d[0] - 1);</li>
<li>$r = mysql_query("SELECT username FROM user LIMIT $rand, 1");</li>
</ol>
</pre>
<h3><strong>11. Mysql 优化变量类型：将IP地址存储为无符号整型</strong></h3>
<p>程序员经常在创建一个VARCHAR（15）时并没有意识到他们可以将IP地址以整数形式来存储，没有考虑到Mysql优化的问题。当你有一个 INT类型时，你只占用4个字 节的空间，这是一个固定大小的领域。确定所操作的数据库列是一个UNSIGNED  INT类型的,因为IP地址将使用32位unsigned integer。</p>
<h3>12. MySQL如何优化LEFT JOIN和RIGHT JOIN</h3>
<p>在MySQL中，LEFT JOIN和STRAIGHT_JOIN强制的表读顺序可以帮助联接数据库Mysql优化器更快地工作，因为检查的表交换更少。</p>
<pre>SELECT *</pre>
<pre>    FROM b,a LEFT JOIN c ON (c.key=a.key) LEFT JOIN d ON (d.key=a.key)</pre>
<pre>    WHERE b.key=d.key;</pre>
<p>MySQL可以进行下面方法的LEFT JOIN优化：如果对于产生的NULL行，WHERE条件总为假，LEFT JOIN变为普通联接。</p>
<p>例如，在下面的查询中如果t2.column1为NULL，WHERE 子句将为false：</p>
<pre>SELECT * FROM t1 LEFT JOIN t2 ON (column1) WHERE t2.column2=5;</pre>
<p>因此，可以安全地将查询转换为普通联接：</p>
<pre>SELECT * FROM t1, t2 WHERE t2.column2=5 AND t1.column1=t2.column1;</pre>
<p>这样可以更快，因为如果可以使查询更佳，MySQL可以在表t1之前使用表t2。 为了强制使用数据库表顺序，使用STRAIGHT_JOIN。</p>
<h3>13. MySQL如何优化嵌套Join</h3>
<p>在MySQL数据库中，CROSS JOIN语法上等价于INNER JOIN (它们可以彼此代替。在标准SQL中，它们不等价。INNER JOIN结合ON子句使用；CROSS JOIN 用于其它地方。</p>
<p>总的来说，在只包含内部联接操作的联接表达式中可以忽略括号。删除括号并将操作组合到左侧后，联接表达式：</p>
<pre>t1 LEFT JOIN (t2 LEFT JOIN t3 ON t2.b=t3.b OR t2.b IS NULL)</pre>
<pre>   ON t1.a=t2.a</pre>
<p>转换为表达式：</p>
<pre>(t1 LEFT JOIN t2 ON t1.a=t2.a) LEFT JOIN t3</pre>
<pre>    ON t2.b=t3.b OR t2.b IS NULL</pre>
<p>但是这两个表达式不等效。不能忽视左外联接操作的右操作数和右联接操作的左操作数中的括号。也就是不能忽视外联接操作中的内表达式中的括号。可以忽视其它 操作数中的括号(外部表的操作数)。</p>
<p>对于任何表t1、t2、t3和 属性t2.b和t3.b的任何条件P，下面的表达式：</p>
<pre>(t1,t2) LEFT JOIN t3 ON P(t2.b,t3.b)</pre>
<p>等价于表达式</p>
<pre>t1，t2 LEFT JOIN t3 ON P(t2.b,t3.b)</pre>
<p>MySQL数据库对于只包含内联接(而非外联接)的联接表达式，可以删除括号。 你可以移除括号并从左到右评估(或实际上，你可以按任何顺序评估表)。对外联接却不是这样。去除括号可能会更改结果。对外联接和内联接的结合，也不是这样。去除括号可能会更改结果。</p>
<div>
<div>
<div>
<div>
<h3>14. MySQL如何优化GROUP BY</h3>
</div>
</div>
</div>
<p>满足GROUP  			BY子句的最一般的方法是扫描整个表并创建一个新的临时表，表中每个组的所有行应为连续的，然后使用该临时表来找到组并应用累积函数(如 果有)。在某些情况中，<strong>MySQL</strong>能够做得更好，通过索引访问而不用创建临时表。数据库Mysql索引优化是数据库优化技巧常用的重要方法。</p>
<p>为GROUP  			BY使用数据库索引的最重要的前提条件是 所有GROUP  			 BY列引用同一索引的属性，并且索引按顺序保存其关键字(例如，这是B-树索  引，而不是HASH索引)。是否用索引访问来代替临时表的使用还取决于在查询中使用了哪部分索引、  为该部分指定的条件，以及选择的累积函数。有两种方法通过索引访问执行GROUP  			 BY查询，组合操作结合所有范围判断式使用(如果有)。第2个方法首先执行范围扫描，然后组合结果元组。</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/%e6%95%b0%e6%8d%ae%e5%ba%93mysql%e4%bc%98%e5%8c%96%e6%8a%80%e5%b7%a7%e5%b8%b8%e7%94%a8%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL高手篇:精妙SQL语句介绍</title>
		<link>http://www.3code.cn/sql%e9%ab%98%e6%89%8b%e7%af%87%e7%b2%be%e5%a6%99sql%e8%af%ad%e5%8f%a5%e4%bb%8b%e7%bb%8d/</link>
		<comments>http://www.3code.cn/sql%e9%ab%98%e6%89%8b%e7%af%87%e7%b2%be%e5%a6%99sql%e8%af%ad%e5%8f%a5%e4%bb%8b%e7%bb%8d/#comments</comments>
		<pubDate>Tue, 03 May 2011 08:40:05 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2547</guid>
		<description><![CDATA[SQL高手篇:精妙SQL语句介绍 ]]></description>
			<content:encoded><![CDATA[<p>说明：复制表(只复制结构,源表名：a 新表名：b)</p>
<p>SQL: select * into b from a where 1&lt;&gt;1</p>
<p>说明：拷贝表(拷贝数据,源表名：a 目标表名：b)</p>
<p>SQL: insert into b(a, b, c) select  d,e,f from b;</p>
<p>说明：显示文章、提交人和最后回复时间</p>
<p>SQL: select  a.title,a.username,b.adddate from table a,(select max(adddate) adddate from  table where table.title=a.title) b</p>
<p>说明：外连接查询(表名1：a 表名2：b)</p>
<p>SQL:  select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c</p>
<p>说明：日程安排提前五分钟提醒</p>
<p>SQL: select * from 日程安排 where  datediff('minute',f开始时间,getdate())&gt;5</p>
<p>说明：两张关联表，删除主表中已经在副表中没有的信息</p>
<p>SQL:</p>
<p>delete from info where not exists ( select * from infobz  where info.infid=infobz.infid )</p>
<p>说明：--</p>
<p>SQL:</p>
<p>SELECT A.NUM,  A.NAME, B.UPD_DATE, B.PREV_UPD_DATE FROM TABLE1,(SELECT X.NUM, X.UPD_DATE,  Y.UPD_DATE PREV_UPD_DATE FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND  FROM TABLE2 WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X,  (SELECT NUM, UPD_DATE, STOCK_ONHAND FROM TABLE2 WHERE  TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM')  amp;brvbar;amp;brvbar; '/01','YYYY/MM/DD') - 1, 'YYYY/MM') ) Y, WHERE X.NUM =  Y.NUM （+）AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) &lt;&gt; X.STOCK_ONHAND ) B  WHERE A.NUM = B.NUM</p>
<p>说明：--</p>
<p>SQL:</p>
<p>select * from studentinfo  where not exists(select * from student where studentinfo.id=student.id) and  系名称='"amp;strdepartmentnameamp;"' and 专业名称='"amp;strprofessionnameamp;"' order  by 性别,生源地,高考总成绩<br />
说明： 从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源）</p>
<p>SQL:</p>
<p>SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS  telyear, SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS  JUE,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS  NOV,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DEC FROM  (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration FROM  TELFEESTAND a, TELFEE b WHERE a.tel = b.telfax) a GROUP BY a.userper, a.tel,  a.standfee, TO_CHAR(a.telfeedate, 'yyyy')</p>
<p>说明：四表联查问题：</p>
<p>SQL: select  * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d  on a.a=d.d where .....</p>
<p>说明：得到表中最小的未使用的ID号</p>
<p>SQL:</p>
<p>SELECT  (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN  MIN(HandleID) + 1 ELSE 1 END) as HandleID FROM Handle WHERE NOT HandleID IN  (SELECT a.HandleID - 1 FROM Handle a)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/sql%e9%ab%98%e6%89%8b%e7%af%87%e7%b2%be%e5%a6%99sql%e8%af%ad%e5%8f%a5%e4%bb%8b%e7%bb%8d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sql语句替换字段中相同的内容</title>
		<link>http://www.3code.cn/sql%e8%af%ad%e5%8f%a5%e6%9b%bf%e6%8d%a2%e5%ad%97%e6%ae%b5%e4%b8%ad%e7%9b%b8%e5%90%8c%e7%9a%84%e5%86%85%e5%ae%b9/</link>
		<comments>http://www.3code.cn/sql%e8%af%ad%e5%8f%a5%e6%9b%bf%e6%8d%a2%e5%ad%97%e6%ae%b5%e4%b8%ad%e7%9b%b8%e5%90%8c%e7%9a%84%e5%86%85%e5%ae%b9/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 03:29:26 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2526</guid>
		<description><![CDATA[sql语句替换字段中相同的内容]]></description>
			<content:encoded><![CDATA[<p>update   cg   set   tel=replace(tel, '0755 - ','')</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/sql%e8%af%ad%e5%8f%a5%e6%9b%bf%e6%8d%a2%e5%ad%97%e6%ae%b5%e4%b8%ad%e7%9b%b8%e5%90%8c%e7%9a%84%e5%86%85%e5%ae%b9/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PHP生成PDF实战</title>
		<link>http://www.3code.cn/php%e7%94%9f%e6%88%90pdf%e5%ae%9e%e6%88%98/</link>
		<comments>http://www.3code.cn/php%e7%94%9f%e6%88%90pdf%e5%ae%9e%e6%88%98/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 03:37:21 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 函数]]></category>
		<category><![CDATA[PHP文件]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2512</guid>
		<description><![CDATA[PHP生成PDF实战]]></description>
			<content:encoded><![CDATA[<p>PHP生成PDF实战</p>
<p>附有实例。</p>
<p>下载地址：<a href="http://www.3code.cn/download/php2pdf.rar">http://www.3code.cn/download/php2pdf.rar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php%e7%94%9f%e6%88%90pdf%e5%ae%9e%e6%88%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RewriteRule-htaccess详细语法使用教程</title>
		<link>http://www.3code.cn/rewriterule-htaccess%e8%af%a6%e7%bb%86%e8%af%ad%e6%b3%95%e4%bd%bf%e7%94%a8%e6%95%99%e7%a8%8b/</link>
		<comments>http://www.3code.cn/rewriterule-htaccess%e8%af%a6%e7%bb%86%e8%af%ad%e6%b3%95%e4%bd%bf%e7%94%a8%e6%95%99%e7%a8%8b/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 08:10:04 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 函数]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2435</guid>
		<description><![CDATA[RewriteRule-htaccess详细语法使用教程.有一个经典的教程： 正则表达式30分钟入门教程，大家可以搜索一下。
这个教程的确很简单，看完基本上写一些简单的正则就没有问题了。正则是一个需要长期使用的工具，隔段时间不用会忘记，所以我每次都看一遍这个教程。其实学过之后重要的就是一点内容。

]]></description>
			<content:encoded><![CDATA[<p><strong>一、正则表达式教程</strong></p>
<p>有一个经典的教程： 正则表达式30分钟入门教程，大家可以搜索一下。<br />
这个教程的确很简单，看完基本上写一些简单的正则就没有问题了。正则是一个需要长期使用的工具，隔段时间不用会忘记，所以我每次都看一遍这个教程。其实学过之后重要的就是一点内容。</p>
<p><strong>简单罗列如下：</strong></p>
<p>.换行符以外的所有字符<br />
\w 匹配字母或数字或下划线或汉字<br />
\s 匹配任意的空白符<br />
\d 匹配数字<br />
\b 匹配单词的开始或结束<br />
^ 匹配字符串的开始<br />
$ 匹配字符串的结束<br />
* 重复零次或更多次<br />
+ 重复一次或更多次<br />
? 重复零次或一次<br />
{n} 重复n次<br />
{n,}重复n次或更多次<br />
{n,m} 重复n到m次</p>
<p><strong>应用替换时，前面第一个（）中匹配的内容后面就用$1引用，第二个（）中匹配的就用$2应用……</strong></p>
<p><strong>分析一下 discuz搜索引擎优化 htaccess 里面的重写。</strong></p>
<p>RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&amp;page=$2</p>
<p>首先加入用户通过 linuxidc.com/forum-2-3.html 访问discuz论坛，那么先通过.htaccess过滤，看看是否需要.htaccess引导一下用户，如果满足列出的一系列RewriteCond的 条件那么就进行重写，</p>
<p>discuz的没有列出RewriteCond 所以应该全部都进行重写。所以开始进行转写，forum-2-3.html 这个正好符合 列出的^forum-([0-9]+)-([0-9]+)\.html$ 正则表达式。并且 $1 为 2 ，$2为3 ，所以代</p>
<p>入后面，即 forumdisplay.php?fid=2&amp;page=3 加上前面的RewriteBase 指定的文件目录，那么就带他到制定目录的forumdisplay.php?fid=2&amp;page=3 。</p>
<p><strong>二、常见的.htaccess应用举例（部分例子引自四个例子实战讲解.htaccess文件rewrite规则）</strong></p>
<p>4.1 防止盗链，如果来得要访问jpe jpg bmp png结尾的url 用户不是来自我们的网站，那么让他看一张我们网站的展示图片。<br />
RewriteEngine OnRewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC]RewriteCond %{HTTP_REFERER} !^$RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]</p>
<p>4.2 网站升级的时候，只有特定IP才能访问，其他的用户将看到一个升级页面<br />
RewriteEngine onRewriteCond %{REQUEST_URI} !/upgrade.html$RewriteCond %{REMOTE_HOST} !^24\.121\.202\.30</p>
<p>RewriteRule $ <a href="http://www.linuxidc.com/upgrade.html">http://www.linuxidc.com/upgrade.html</a> [R=302,L]</p>
<p>4.3把老的域名转向新域名<br />
# redirect from old domain to new domainRewriteEngine OnRewriteRule ^(.*)$http://www.yourdomain.com/$1[R=301,L]</p>
<p><strong>三、常用示例</strong></p>
<p><span style="color: #800000;">RewriteEngine On<br />
RewriteRule index.html index.php</span></p>
<p>比如：<a href="http://www.3code.cn/index.html">http://www.3code.cn/index.html</a>  -&gt; <a href="http://www.3code.cn/index.php">http://www.3code.cn/index.php</a></p>
<p><span style="color: #800000;">RewriteRule ^test([0-9]*).html$ test.php?id=$1</span></p>
<p>比如：<a href="http://www.3code.cn/test8.html">http://www.3code.cn/test8.html</a>  -&gt; <a href="http://www.3code.cn/test.php?id=8">http://www.3code.cn/test.php?id=8</a></p>
<p><span style="color: #800000;">RewriteRule ^cat-([0-9]+)-([0-9]+)\.html$ cat.php?id1=$1&amp;id2=$2</span></p>
<p>比如：<a href="http://www.3code.cn/cat-1-3.html">http://www.3code.cn/cat-1-3.html</a> -&gt; <a href="http://www.3code.cn/cat.php?id1=1&amp;id2=3">http://www.3code.cn/cat.php?id1=1&amp;id2=3</a></p>
<p><span style="color: #800000;">RewriteRule ^cat-([a-zA-Z0-9\-]*)-([0-9]+)-([0-9]+)\.html$ cat.php?id0=$1&amp;id1=$2&amp;id2=$3</span></p>
<p>比如：<a href="http://www.3code.cn/cat-zbc2ac-3-5.html">http://www.3code.cn/cat-zbc2ac-3-5.html</a> -&gt; <a href="http://www.3code.cn/cat.php?id0=zbc2ac&amp;id1=3&amp;id2=5">http://www.3code.cn/cat.php?id0=zbc2ac&amp;id1=3&amp;id2=5</a></p>
<p><span style="color: #800000;">RewriteRule ^cat1-([0-9]+)-([0-9]+)-([0-9]+)\.html$ cat1.php?id1=$1&amp;id2=$2&amp;id3=$3</span></p>
<p>比如：<a href="http://www.3code.cn/cat1-4-3-8.html">http://www.3code.cn/cat1-4-3-8.html</a> -&gt; <a href="http://www.3code.cn/cat1.php?id1=4&amp;id2=3&amp;id3=8">http://www.3code.cn/cat1.php?id1=4&amp;id2=3&amp;id3=8</a></p>
<p><span style="color: #800000;">RewriteRule ^cat([0-9]*)/$ cat.php?id1=$1</span></p>
<p>比如：<a href="http://www.3code.cn/cat5/">http://www.3code.cn/cat5/</a> -&gt; <a href="http://www.3code.cn/cat.php?id1=5">http://www.3code.cn/cat.php?id1=5</a></p>
<p><span style="color: #800000;">RewriteRule ^catm([0-9]*)/([0-9]*)/$ catm.php?id1=$1&amp;id2=$2</span></p>
<p>比如：<a href="http://www.3code.cn/catm6/3/">http://www.3code.cn/catm6/3/</a> -&gt; <a href="http://www.3code.cn/catm.php?id1=1&amp;id2=3">http://www.3code.cn/catm.php?id1=6&amp;id2=3</a></p>
<p>希望对大家有所帮助！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/rewriterule-htaccess%e8%af%a6%e7%bb%86%e8%af%ad%e6%b3%95%e4%bd%bf%e7%94%a8%e6%95%99%e7%a8%8b/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WORDPRESS主机空间</title>
		<link>http://www.3code.cn/wordpress%e4%b8%bb%e6%9c%ba%e7%a9%ba%e9%97%b4/</link>
		<comments>http://www.3code.cn/wordpress%e4%b8%bb%e6%9c%ba%e7%a9%ba%e9%97%b4/#comments</comments>
		<pubDate>Sun, 05 Dec 2010 14:41:45 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WORDPRESS主题技术]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2324</guid>
		<description><![CDATA[Wordpress主机空间，经历了长期的稳定性测试以及压力测试，我们选用了美国优秀的西海岸数据中心，保证了99.9%的在线服务时间。不但国外用户访问速度快，同时也是到亚太地区带宽最快的美国数据中心。所以我们的空间适合外贸网站用户，也适合国内用户。]]></description>
			<content:encoded><![CDATA[<p>本站与海外留学生团队合作，致力于为国内用户提供稳定可靠、价格经济的国外虚拟主机。我们的目标是“提供稳定、易用、快速的空间服务”，包含高质量的空间服务水平，高质量的空间网络速度，高质量的主机运算水平。</p>
<p>我们在Wordpress、PHP+MYSQL领域已为200多名用户提供了虚拟主机服务。</p>
<p>经历了长期的稳定性测试以及压力测试，我们选用了美国优秀的西海岸数据中心，保证了99.9%的在线服务时间。不但国外用户访问速度快，同时也是到亚太地区带宽最快的美国数据中心。所以我们的空间适合外贸网站用户，也适合国内用户。</p>
<p><strong>空间具有以下特点：</strong></p>
<p>* 不用担心中国特色的备案！<br />
* 美国的数据中心保证了您的站点全世界访问速度都不错！<br />
* 美国的数据中心硬件质量高！<br />
* 对所有用户数据定期备份,保证万无一失！<br />
* 用户购买空间时可选择免费全站转移服务！</p>
<p>* 提供中文cPanel后台控制面板<br />
* 支持安装多种PHP,CGI,Python程序<br />
* RAID1存储保障,数据自动备份<br />
* 可随时升级至高级方案<br />
* 支持伪静态<br />
* 支持支付宝在线付款</p>
<table border="0" cellspacing="1" cellpadding="4" bgcolor="#cccccc">
<tbody>
<tr>
<td bgcolor="#ffffff"><strong>空间类型</strong></td>
<td bgcolor="#ffffff">专业空间A型</td>
<td bgcolor="#ffffff">专业空间B型</td>
</tr>
<tr>
<td bgcolor="#ffffff"><strong>空间大小</strong></td>
<td bgcolor="#ffffff">1G</td>
<td bgcolor="#ffffff">2G</td>
</tr>
<tr>
<td bgcolor="#ffffff"><strong>每月流量</strong></td>
<td bgcolor="#ffffff">15G</td>
<td bgcolor="#ffffff">30G</td>
</tr>
<tr>
<td bgcolor="#ffffff"><strong>MySql数据库</strong></td>
<td bgcolor="#ffffff">无限</td>
<td bgcolor="#ffffff">无限</td>
</tr>
<tr>
<td bgcolor="#ffffff"><strong>绑定域名</strong></td>
<td bgcolor="#ffffff">无限</td>
<td bgcolor="#ffffff">无限</td>
</tr>
<tr>
<td bgcolor="#ffffff"><strong>子域名</strong></td>
<td bgcolor="#ffffff">无限</td>
<td bgcolor="#ffffff">无限</td>
</tr>
<tr>
<td bgcolor="#ffffff"><strong>停放域名</strong></td>
<td bgcolor="#ffffff">无限</td>
<td bgcolor="#ffffff">无限</td>
</tr>
<tr>
<td bgcolor="#ffffff"><strong>邮箱数量</strong></td>
<td bgcolor="#ffffff">无限</td>
<td bgcolor="#ffffff">无限</td>
</tr>
<tr>
<td bgcolor="#ffffff"><strong>空间功能</strong></td>
<td colspan="2" bgcolor="#ffffff">PHP5+MYSQL+ZEND/cPanel中文管理面板,支持在线压缩解压及静态化</td>
</tr>
<tr>
<td bgcolor="#ffffff"><strong>价格</strong></td>
<td bgcolor="#ffffff">400元/年</td>
<td bgcolor="#ffffff">700元/年</td>
</tr>
</tbody>
</table>
<p>速度测试：<a href="http://www.cwdoo.com" target="_blank">www.cwdoo.com</a>   <a href="http://wp.9cweb.com" target="_blank">wp.9cweb.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/wordpress%e4%b8%bb%e6%9c%ba%e7%a9%ba%e9%97%b4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php正则获取与修改img标记中任意属性</title>
		<link>http://www.3code.cn/php%e6%ad%a3%e5%88%99%e8%8e%b7%e5%8f%96%e4%b8%8e%e4%bf%ae%e6%94%b9img%e6%a0%87%e8%ae%b0%e4%b8%ad%e4%bb%bb%e6%84%8f%e5%b1%9e%e6%80%a7/</link>
		<comments>http://www.3code.cn/php%e6%ad%a3%e5%88%99%e8%8e%b7%e5%8f%96%e4%b8%8e%e4%bf%ae%e6%94%b9img%e6%a0%87%e8%ae%b0%e4%b8%ad%e4%bb%bb%e6%84%8f%e5%b1%9e%e6%80%a7/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 05:18:23 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP字符串操作]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2292</guid>
		<description><![CDATA[php正则取img标记中任意属性，正则替换去掉或改变图片img标记中的任意属性]]></description>
			<content:encoded><![CDATA[<p>&lt;?php<br />
/*正则取图片img标记中的任意属性*/<br />
$word = '&lt;p height="22" align="cenetr"&gt;111 22&lt;/p&gt; &lt;img height="60" src="/upload/images/aaa.jpg"    width=100 style=&gt;&lt;div style="float:left;"&gt;中国人&lt;/div&gt;';<br />
//取width<br />
preg_match('/&lt;img.+(width=\"?\d*\"?).+&gt;/i',$word,$matches);<br />
echo $matches[1];</p>
<p>//取height<br />
preg_match('/&lt;img.+(height=\"?\d*\"?).+&gt;/i',$word,$matches);<br />
echo $matches[1];</p>
<p>//取src<br />
preg_match('/&lt;img.+src=\"?(.+\.(jpg|gif|bmp|bnp|png))\"?.+&gt;/i',$word,$matches);<br />
echo $matches[1];</p>
<p>/*正则替换去掉或改变图片img标记中的任意属性***************************************************************/<br />
$str = '&lt;p height="22" align="cenetr"&gt;111 22&lt;/p&gt; &lt;img height="60" src="/upload/images/aaa.jpg"    width=100 style=&gt;&lt;div style="float:left;"&gt;中国人&lt;/div&gt;<br />
&lt;p height="22" align="cenetr"&gt;31313 224344&lt;/p&gt; &lt;img src="/upload/images/bbb.jpg" height="60"    width=100 style=&gt;&lt;div style="float:left;"&gt;1212121&lt;/div&gt;';<br />
//改变src属性(此处将原来的src="/upload/images/bbb.jpg"改变为src="/upload/_thumbs/Images/bbb.jpg")<br />
print preg_replace('/(&lt;img.+src=\"?.+)(images\/)(.+\.(jpg|gif|bmp|bnp|png)\"?.+&gt;)/i',"\${1}_thumbs/Images/\${3}",$str);<br />
/*改变src属性,<br />
此处将原来的src="/upload/images/bbb.jpg"改变为src="/upload/_thumbs/Images/bbb.jpg",并舍弃宽和高<br />
(比如你想在前台显示缩略图,但数据库中存储的是原图的路径。为什么要舍弃宽高??你缩略图啊!还是原图的宽高,会怎样???)<br />
*/<br />
print preg_replace('/(&lt;img).+(src=\"?.+)images\/(.+\.(jpg|gif|bmp|bnp|png)\"?).+&gt;/i',"\${1} \${2}_thumbs/Images/\${3}&gt;",$str);</p>
<p>?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php%e6%ad%a3%e5%88%99%e8%8e%b7%e5%8f%96%e4%b8%8e%e4%bf%ae%e6%94%b9img%e6%a0%87%e8%ae%b0%e4%b8%ad%e4%bb%bb%e6%84%8f%e5%b1%9e%e6%80%a7/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MySQL中文模糊检索问题</title>
		<link>http://www.3code.cn/mysql%e4%b8%ad%e6%96%87%e6%a8%a1%e7%b3%8a%e6%a3%80%e7%b4%a2%e9%97%ae%e9%a2%98/</link>
		<comments>http://www.3code.cn/mysql%e4%b8%ad%e6%96%87%e6%a8%a1%e7%b3%8a%e6%a3%80%e7%b4%a2%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 07:04:29 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2262</guid>
		<description><![CDATA[在 MySQL下，在进行中文模糊检索时，经常会返回一些与之不相关的记录，如查找 "%a%" 时，返回的可能有中文字符，却没有a字符存在。本人以前也曾遇到过类似问题，经详细阅读MySQL的Manual，发现可以有一种方法很方便的解决并得到满意的结果。]]></description>
			<content:encoded><![CDATA[<p>在 MySQL下，在进行中文模糊检索时，经常会返回一些与之不相关的记录，如查找 "%a%" 时，返回的可能有中文字符，却没有a字符存在。本人以前也曾遇到过类似问题，经详细阅读MySQL的Manual，发现可以有一种方法很方便的解决并得到满意的结果。<br />
例子：<br />
希望通过“标题”对新闻库进行检索，关键字可能包含是中英文，如下SQL语句：<br />
select id,title,name from achech_com.news where title like '%a%'<br />
返回的结果，某些title字段确定带了“a”关键字，而有些则只有中文，但也随之返回在检索结果中。<br />
解决方法，使用 BINARY 属性进行检索，如：<br />
QUOTE: )<br />
select id,title,name from achech_com.news where binary title like '%a%'<br />
返回的结果较之前正确，但英文字母区分大小写，故有时在检索如“Achech”及“achech”的结果是不一样的。知道了使用 BINARY 属性可以解决前面这个问题，再看看 MySQL 支持的UCASE 及 CONCAT 函数，其中 UCASE 是将英文全部转成大写，而CONCAT函数的作用是对字符进行连接，以下是我们完全解决后的SQL 语句：<br />
QUOTE: &lt;g<br />
select id,title,name from achech_com.news<br />
where binary ucase(title) like concat('%',ucase('a'),'%') "<br />
检索的步骤是先将属性指定为 BINARY ，以精确检索结果，而被 like 的 title内容存在大小写字母的可能，故先使用 ucase 函数将字段内容全部转换成大写字母，然后再进行 like 操作，而 like 的操作使用模糊方法，使用 concat的好处是传进来的可以是直接的关键字，不需要带“%”万用符，将“'a'”直接换成你的变量，在任何语言下都万事无忧了。 当然你也可以这么写：<br />
select id,title,name from achech_com.news where binary ucase(title) like ucase('%a%')<br />
检索的结果还算满意吧，不过速度可能会因此而慢N毫秒。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/mysql%e4%b8%ad%e6%96%87%e6%a8%a1%e7%b3%8a%e6%a3%80%e7%b4%a2%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>去除特殊字符生成URL的函数</title>
		<link>http://www.3code.cn/%e5%8e%bb%e9%99%a4%e7%89%b9%e6%ae%8a%e5%ad%97%e7%ac%a6%e7%94%9f%e6%88%90url%e7%9a%84%e5%87%bd%e6%95%b0/</link>
		<comments>http://www.3code.cn/%e5%8e%bb%e9%99%a4%e7%89%b9%e6%ae%8a%e5%ad%97%e7%ac%a6%e7%94%9f%e6%88%90url%e7%9a%84%e5%87%bd%e6%95%b0/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 08:24:34 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 函数]]></category>
		<category><![CDATA[PHP生成HTML]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2240</guid>
		<description><![CDATA[去除特殊字符生成URL的函数]]></description>
			<content:encoded><![CDATA[<p>&lt;?<br />
//去除特殊字符的函数，目的是生成URL<br />
echo "输入: ".$_REQUEST["myfilename"]."&lt;br&gt;&lt;br&gt;";<br />
$myfilename=strtolower(str_replace(" ","-",trim($_REQUEST["myfilename"])));<br />
$myarp=array('.','+',',','，','。','%','&amp;','*','/','\\','|','=','(',')','^','$','#','@','!','~','`','/',';',':','"','[',']','{','}','&gt;','&lt;');<br />
for($i=0;$i&lt;=count($myarp);$i++)<br />
{$myfilename=str_replace($myarp[$i],"",$myfilename);<br />
}</p>
<p>echo "输出： ". $myfilename."&lt;br&gt;&lt;br&gt;";<br />
?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/%e5%8e%bb%e9%99%a4%e7%89%b9%e6%ae%8a%e5%ad%97%e7%ac%a6%e7%94%9f%e6%88%90url%e7%9a%84%e5%87%bd%e6%95%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP企业级应用缓存技术</title>
		<link>http://www.3code.cn/php%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%ba%94%e7%94%a8%e7%bc%93%e5%ad%98%e6%8a%80%e6%9c%af/</link>
		<comments>http://www.3code.cn/php%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%ba%94%e7%94%a8%e7%bc%93%e5%ad%98%e6%8a%80%e6%9c%af/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 16:22:02 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2158</guid>
		<description><![CDATA[数据缓存：这里所说的数据缓存是指数据库查询缓存，每次访问页面的时候,都会先检测相应的缓存数据是否存在，如果不存在，就连接数据库，得到数据， 并把查询结果序列化后保存到文件中，以后同样的查询结果就直接从缓存表或文件中获得。 用的最广的例子看Discuz的搜索功能，把结果ID缓存到一个表中，下次搜索相同关键字时先搜索缓存表。 举个常用的方法，多表关联的时候，把附表中的内容生成数组保存到主表的一个字段中，需要的时候数组分解一下，这样的好处是只读一个表，坏处就是两个 数据同步会多不少步骤，数据库永远是瓶颈，用硬盘换速度，是这个的关键点。 页面缓存： 每次访问页面的时候，都会先检测相应的缓存页面文件是否存在，如果不存在，就连接数据库，得到数据，显示页面并同时生成缓存页面文件，这样下次访问 的时候页面文件就发挥作用了。(模板引擎和网上常见的一些缓存类通常有此功能) 时间触发缓存： 检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大，那么就用缓存，否则更新缓存。 内容触发缓存： 当插入数据或更新数据时，强制更新缓存。 静态缓存： 这里所说的静态缓存是指静态化，直接生成HTML或xml等文本文件，有更新的时候重生成一次，适合于不太变化的页面，这就不说了。 以上内容是代码级的解决方案，我直接CP别的框架，也懒得改，内容都差不多，很容易就做到，而且会几种方式一起用，但下面的内容是服务器端的缓存方 案，非代码级的，要有多方的合作才能做到 内存缓存: Memcached是高性能的，分布式的内存对象缓存系统，用于在动态应用中减少数据库负载，提升访问速度。 这里说下Memcached的例子： &#60;?php $memcache = new Memcache; $memcache-&#62;connect(‘localhost’, 11211) or die (“Could not connect”); $version = $memcache-&#62;getVersion(); echo “Server’s version: “.$version.”\n”; $tmp_object = new stdClass; $tmp_object-&#62;str_attr = ‘test’; $tmp_object-&#62;int_attr = 123; $memcache-&#62;set(‘key’, $tmp_object, false, 10) or die (“Failed [...]]]></description>
			<content:encoded><![CDATA[<p>数据缓存：这里所说的数据缓存是指数据库查询缓存，每次访问页面的时候,都会先检测相应的缓存数据是否存在，如果不存在，就连接数据库，得到数据， 并把查询结果序列化后保存到文件中，以后同样的查询结果就直接从缓存表或文件中获得。</p>
<p>用的最广的例子看Discuz的搜索功能，把结果ID缓存到一个表中，下次搜索相同关键字时先搜索缓存表。</p>
<p>举个常用的方法，多表关联的时候，把附表中的内容生成数组保存到主表的一个字段中，需要的时候数组分解一下，这样的好处是只读一个表，坏处就是两个 数据同步会多不少步骤，数据库永远是瓶颈，用硬盘换速度，是这个的关键点。</p>
<p>页面缓存：</p>
<p>每次访问页面的时候，都会先检测相应的缓存页面文件是否存在，如果不存在，就连接数据库，得到数据，显示页面并同时生成缓存页面文件，这样下次访问 的时候页面文件就发挥作用了。(模板引擎和网上常见的一些缓存类通常有此功能)</p>
<p>时间触发缓存：</p>
<p>检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大，那么就用缓存，否则更新缓存。</p>
<p>内容触发缓存：</p>
<p>当插入数据或更新数据时，强制更新缓存。</p>
<p>静态缓存：</p>
<p>这里所说的静态缓存是指静态化，直接生成HTML或xml等文本文件，有更新的时候重生成一次，适合于不太变化的页面，这就不说了。</p>
<p>以上内容是代码级的解决方案，我直接CP别的框架，也懒得改，内容都差不多，很容易就做到，而且会几种方式一起用，但下面的内容是服务器端的缓存方 案，非代码级的，要有多方的合作才能做到</p>
<p>内存缓存:</p>
<p>Memcached是高性能的，分布式的内存对象缓存系统，用于在动态应用中减少数据库负载，提升访问速度。</p>
<p>这里说下Memcached的例子：</p>
<p>&lt;?php<br />
$memcache = new Memcache;<br />
$memcache-&gt;connect(‘localhost’, 11211) or die (“Could not connect”);<br />
$version = $memcache-&gt;getVersion();<br />
echo “Server’s version: “.$version.”\n”;<br />
$tmp_object = new stdClass;<br />
$tmp_object-&gt;str_attr = ‘test’;<br />
$tmp_object-&gt;int_attr = 123;<br />
$memcache-&gt;set(‘key’, $tmp_object, false, 10) or die (“Failed to save data at the server”);<br />
echo “Store data in the cache (data will expire in 10 seconds)\n”;<br />
$get_result = $memcache-&gt;get(‘key’);<br />
echo “Data from the cache:\n”;<br />
var_dump($get_result);<br />
?&gt;</p>
<p>读库的例子：</p>
<p>&lt;?php<br />
$sql = ‘SELECT * FROM users’;<br />
$key = md5($sql);   //memcached 对象标识符<br />
if ( !($datas = $mc-&gt;get($key)) ) {<br />
//  在 memcached 中未获取到缓存数据，则使用数据库查询获取记录集。<br />
echo “n”.str_pad(‘Read datas from MySQL.’, 60, ‘_’).”n”;<br />
$conn = mysql_connect(‘localhost’, ‘test’, ‘test’);<br />
mysql_select_db(‘test’);<br />
$result = mysql_query($sql);<br />
while ($row = mysql_fetch_object($result))<br />
$datas[] = $row;<br />
//  将数据库中获取到的结果集数据保存到 memcached 中，以供下次访问时使用。<br />
$mc-&gt;add($key, $datas);<br />
} else {<br />
echo “n”.str_pad(‘Read datas from memcached.’, 60, ‘_’).”n”;<br />
}<br />
var_dump($datas);<br />
?&gt;</p>
<p>php的缓冲器：</p>
<p>有eaccelerator， apc， phpa，xcache，这个这个就不说了吧，搜索一堆一堆的，自己看啦，知道有这玩意就OK</p>
<p>MYSQL缓存：</p>
<p>这也算非代码级的，经典的数据库就是用的这种方式，看下面的运行时间，0.09xxx之类的<br />
我贴段根据蓝色那家伙修改后部分my.ini 吧，2G的MYISAM表可以在0.05S左右，据说他前后改了有快一年</p>
<p>[client]<br />
……<br />
default-character-set=gbk<br />
default-storage-engine=MYISAM<br />
max_connections=600<br />
max_connect_errors=500<br />
back_log=200<br />
interactive_timeout=7200<br />
query_cache_size=64M<br />
……<br />
table_cache=512<br />
……<br />
myisam_max_sort_file_size=100G<br />
myisam_max_extra_sort_file_size=100G<br />
myisam_sort_buffer_size=128M<br />
key_buffer_size=1024M<br />
read_buffer_size=512M<br />
……<br />
thread_concurrency=8<br />
基于反向代理的Web缓存:</p>
<p>如Nginx，SQUID，mod_PRoxy(apache2以上又分为mod_proxy和mod_cache)<br />
NGINX的例子</p>
<p>&lt;nginx.conf&gt;<br />
#user  nobody;<br />
worker_processes  4;<br />
error_log  logs/error.log crit;<br />
pid        logs/nginx.pid;<br />
worker_rlimit_nofile 10240;<br />
events {<br />
use epoll;<br />
worker_connections  51200;<br />
}<br />
http {<br />
include       mime.types;<br />
default_type  application/octet-stream;<br />
sendfile    on;<br />
keepalive_timeout 65;<br />
tcp_nodelay on;<br />
# server pool<br />
upstream bspfrontsvr {<br />
server 10.10.10.224:80   weight=1;<br />
server 10.10.10.221:80   weight=1;<br />
}</p>
<p>upstream bspimgsvr {<br />
server 10.10.10.201:80   weight=1;<br />
}</p>
<p>upstream bspstylesvr {<br />
server 10.10.10.202:80   weight=1;<br />
}</p>
<p>upstream bsphelpsvr {<br />
server 10.10.10.204:80   weight=1;<br />
}</p>
<p>upstream bspwsisvr {<br />
server 10.10.10.203:80   weight=1;<br />
}</p>
<p>upstream bspadminsvr {<br />
server 10.10.10.222:80   weight=1;<br />
}</p>
<p>upstream bspbuyersvr {<br />
server 10.10.10.223:80   weight=1;<br />
}</p>
<p>upstream bspsellersvr {<br />
server 10.10.10.225:80   weight=1;<br />
}<br />
upstream  bsploginsvr  {<br />
server 10.10.10.220:443  weight=1;<br />
}<br />
upstream  bspregistersvr  {<br />
server 10.10.10.220:80  weight=1;<br />
}<br />
log_format  test_com  ‘$remote_addr – $remote_user [$time_local] “$request” ‘<br />
‘$status $body_bytes_sent “$http_referer” “$http_user_agent” ‘;<br />
#——————————————————————–<br />
#img.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  img.test.com;<br />
location / {<br />
proxy_pass      http://bspimgsvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/img.log  test_com;<br />
}</p>
<p>#style.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  style.test.com;<br />
location / {<br />
proxy_pass      http://bspstylesvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/style.log  test_com;<br />
}</p>
<p>#help.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  help.test.com;<br />
location / {<br />
proxy_pass      http://bsphelpsvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/help.log  test_com;<br />
}</p>
<p>#admin.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  admin.test.com;<br />
location / {<br />
proxy_pass      http://bspadminsvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/admin.log  test_com;<br />
}</p>
<p>#buyer.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  buyer.test.com;<br />
location / {<br />
proxy_pass      http://bspbuyersvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/buyer.log  test_com;<br />
}</p>
<p>#seller.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  seller.test.com;<br />
location / {<br />
proxy_pass      http://bspsellersvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/seller.log  test_com;<br />
}<br />
#wsi.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  wsi.test.com;<br />
location / {<br />
proxy_pass      http://bspwsisvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/wsi.log  test_com;<br />
}<br />
#www.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  www.test.com   *.test.com;<br />
location ~ ^/NginxStatus/ {<br />
stub_status on;<br />
access_log off;<br />
}<br />
location / {<br />
proxy_pass      http://bspfrontsvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/www.log  test_com;<br />
error_page   500 502 503 504  /50x.html;<br />
location = /50x.html {<br />
root   html;<br />
}<br />
}<br />
#login.test.com<br />
server {<br />
listen       10.10.10.230:443;<br />
server_name  login.test.com;<br />
ssl                  on;<br />
ssl_certificate      cert.pem;<br />
ssl_certificate_key  cert.key;<br />
ssl_session_timeout  5m;<br />
ssl_protocols  SSLv2 SSLv3 TLSv1;<br />
ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;<br />
ssl_prefer_server_ciphers   on;<br />
location / {<br />
proxy_pass        https://bsploginsvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/login.log  test_com;<br />
}<br />
#login.test.com for register<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  login.test.com;<br />
location / {<br />
proxy_pass        http://bspregistersvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/register.log  test_com;<br />
}</p>
<p>}<br />
&lt;conf/proxy_setting.conf&gt;<br />
proxy_redirect          off;<br />
proxy_set_header        Host $host;<br />
proxy_set_header        X-Real-IP $remote_addr;<br />
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;<br />
client_max_body_size    10m;<br />
client_body_buffer_size 128k;<br />
proxy_connect_timeout   90;<br />
proxy_send_timeout      90;<br />
proxy_read_timeout      90;<br />
proxy_buffer_size       4k;<br />
proxy_buffers           4 32k;<br />
proxy_busy_buffers_size 64k;<br />
proxy_temp_file_write_size 64k;<br />
mod_proxy的例子：</p>
<p>&lt;VirtualHost *&gt;<br />
ServerName www.zxsv.com<br />
ServerAdmin admin@zxsv.com<br />
# reverse proxy setting<br />
ProxyPass / http://www.zxsv.com:8080/<br />
ProxyPassReverse / http://www.zxsv.com:8080/<br />
# cache dir root<br />
CacheRoot “/var/www/proxy”<br />
# max cache storage<br />
CacheSize 50000000<br />
# hour: every 4 hour<br />
CacheGcInterval 4<br />
# max page expire time: hour<br />
CacheMaxExpire 240<br />
# Expire time = (now – last_modified) * CacheLastModifiedFactor<br />
CacheLastModifiedFactor 0.1<br />
# defalt expire tag: hour<br />
CacheDefaultExpire 1<br />
# force complete after precent of content retrived: 60-90%<br />
CacheForceCompletion 80<br />
CustomLog /usr/local/apache/logs/dev_access_log combined<br />
&lt;/VirtualHost&gt;<br />
而SQUID的例子我就不说明了，这方面网上有写的太多，大家自己搜索一下</p>
<p>DNS轮询：</p>
<p>BIND是一款开放源码的DNS服务器软件，这个要说起来就大了，自己搜索去，大家知道有这个东西就行了。<br />
我知道的有chinacache 等大站就是这样做的，说简单点就是多服务器啦，把同一个页面或文件缓存到不同的服务器上，按南北自动解析到相关的服务器中。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%ba%94%e7%94%a8%e7%bc%93%e5%ad%98%e6%8a%80%e6%9c%af/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>.htaccess写法一例</title>
		<link>http://www.3code.cn/htaccess/</link>
		<comments>http://www.3code.cn/htaccess/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 10:23:38 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2094</guid>
		<description><![CDATA[htaccess写法实例]]></description>
			<content:encoded><![CDATA[<p><strong>htaccess写法一例</strong></p>
<p>RewriteEngine on<br />
RewriteBase /test/<br />
RewriteRule ^test([0-9]*).html$ test.php?id=$1<br />
RewriteRule ^new([0-9]*)/$ new.php?id=$1</p>
<p>实现效果：</p>
<p>http://localhost/test/test123.html  转化为：http://localhost/test/test.php?id=123</p>
<p>http://localhost/test/new123/  转化为：http://localhost/test/new.php?id=123</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/htaccess/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>php上传图片缩小尺寸实例代码</title>
		<link>http://www.3code.cn/php-upload-pic-cc/</link>
		<comments>http://www.3code.cn/php-upload-pic-cc/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 08:39:20 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP图片]]></category>
		<category><![CDATA[PHP图片上传]]></category>
		<category><![CDATA[php类]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2080</guid>
		<description><![CDATA[将下面的代码保存成一个文件，存在一个目录下，此目录下要有images的目录，用于存放上传的图片。
这样子在本地环境就可以直接测试使用。]]></description>
			<content:encoded><![CDATA[<p>将下面的代码保存成一个文件，存在一个目录下，此目录下要有images的目录，用于存放上传的图片。</p>
<p>这样子在本地环境就可以直接测试使用。</p>
<p>&lt;?php<br />
class CreatMiniature<br />
{<br />
//公共变量<br />
var $srcFile="";        //原图<br />
var $echoType;            //输出图片类型，link--不保存为文件；file--保存为文件<br />
var $im="";                //临时变量<br />
var $srcW="";            //原图宽<br />
var $srcH="";            //原图高</p>
<p>//设置变量及初始化<br />
function SetVar($srcFile,$echoType)<br />
{<br />
$this-&gt;srcFile=$srcFile;<br />
$this-&gt;echoType=$echoType;</p>
<p>$info = "";<br />
$data = GetImageSize($this-&gt;srcFile,$info);<br />
switch ($data[2])<br />
{<br />
case 1:<br />
if(!function_exists("imagecreatefromgif")){<br />
echo "你的GD库不能使用GIF格式的图片，请使用Jpeg或PNG格式！&lt;a href='javascript:go(-1);'&gt;返回&lt;/a&gt;";<br />
exit();<br />
}<br />
$this-&gt;im = ImageCreateFromGIF($this-&gt;srcFile);<br />
break;<br />
case 2:<br />
if(!function_exists("imagecreatefromjpeg")){<br />
echo "你的GD库不能使用jpeg格式的图片，请使用其它格式的图片！&lt;a href='javascript:go(-1);'&gt;返回&lt;/a&gt;";<br />
exit();<br />
}<br />
$this-&gt;im = ImageCreateFromJpeg($this-&gt;srcFile);<br />
break;<br />
case 3:<br />
$this-&gt;im = ImageCreateFromPNG($this-&gt;srcFile);<br />
break;<br />
}<br />
$this-&gt;srcW=ImageSX($this-&gt;im);<br />
$this-&gt;srcH=ImageSY($this-&gt;im);<br />
}</p>
<p>//生成扭曲型缩图<br />
function Distortion($toFile,$toW,$toH)<br />
{<br />
$cImg=$this-&gt;CreatImage($this-&gt;im,$toW,$toH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
}</p>
<p>//生成按比例缩放的缩图<br />
function Prorate($toFile,$toW,$toH)<br />
{<br />
$toWH=$toW/$toH;<br />
$srcWH=$this-&gt;srcW/$this-&gt;srcH;<br />
if($toWH&lt;=$srcWH)<br />
{<br />
$ftoW=$toW;<br />
$ftoH=$ftoW*($this-&gt;srcH/$this-&gt;srcW);<br />
}<br />
else<br />
{<br />
$ftoH=$toH;<br />
$ftoW=$ftoH*($this-&gt;srcW/$this-&gt;srcH);<br />
}<br />
if($this-&gt;srcW&gt;$toW||$this-&gt;srcH&gt;$toH)<br />
{<br />
$cImg=$this-&gt;CreatImage($this-&gt;im,$ftoW,$ftoH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
}<br />
else<br />
{<br />
$cImg=$this-&gt;CreatImage($this-&gt;im,$this-&gt;srcW,$this-&gt;srcH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
}<br />
}</p>
<p>//生成最小裁剪后的缩图<br />
function Cut($toFile,$toW,$toH)<br />
{<br />
$toWH=$toW/$toH;<br />
$srcWH=$this-&gt;srcW/$this-&gt;srcH;<br />
if($toWH&lt;=$srcWH)<br />
{<br />
$ctoH=$toH;<br />
$ctoW=$ctoH*($this-&gt;srcW/$this-&gt;srcH);<br />
}<br />
else<br />
{<br />
$ctoW=$toW;<br />
$ctoH=$ctoW*($this-&gt;srcH/$this-&gt;srcW);<br />
}<br />
$allImg=$this-&gt;CreatImage($this-&gt;im,$ctoW,$ctoH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
$cImg=$this-&gt;CreatImage($allImg,$toW,$toH,0,0,($ctoW-$toW)/2,($ctoH-$toH)/2,$toW,$toH);<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
ImageDestroy($allImg);<br />
}</p>
<p>//生成背景填充的缩图<br />
function BackFill($toFile,$toW,$toH,$bk1=255,$bk2=255,$bk3=255)<br />
{<br />
$toWH=$toW/$toH;<br />
$srcWH=$this-&gt;srcW/$this-&gt;srcH;<br />
if($toWH&lt;=$srcWH)<br />
{<br />
$ftoW=$toW;<br />
$ftoH=$ftoW*($this-&gt;srcH/$this-&gt;srcW);<br />
}<br />
else<br />
{<br />
$ftoH=$toH;<br />
$ftoW=$ftoH*($this-&gt;srcW/$this-&gt;srcH);<br />
}<br />
if(function_exists("imagecreatetruecolor"))<br />
{<br />
@$cImg=ImageCreateTrueColor($toW,$toH);<br />
if(!$cImg)<br />
{<br />
$cImg=ImageCreate($toW,$toH);<br />
}<br />
}<br />
else<br />
{<br />
$cImg=ImageCreate($toW,$toH);<br />
}<br />
$backcolor = imagecolorallocate($cImg, $bk1, $bk2, $bk3);        //填充的背景颜色<br />
ImageFilledRectangle($cImg,0,0,$toW,$toH,$backcolor);<br />
if($this-&gt;srcW&gt;$toW||$this-&gt;srcH&gt;$toH)<br />
{<br />
$proImg=$this-&gt;CreatImage($this-&gt;im,$ftoW,$ftoH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
/*<br />
if($ftoW&lt;$toW)<br />
{<br />
ImageCopyMerge($cImg,$proImg,($toW-$ftoW)/2,0,0,0,$ftoW,$ftoH,100);<br />
}<br />
else if($ftoH&lt;$toH)<br />
{<br />
ImageCopyMerge($cImg,$proImg,0,($toH-$ftoH)/2,0,0,$ftoW,$ftoH,100);<br />
}<br />
*/<br />
if($ftoW&lt;$toW)<br />
{<br />
ImageCopy($cImg,$proImg,($toW-$ftoW)/2,0,0,0,$ftoW,$ftoH);<br />
}<br />
else if($ftoH&lt;$toH)<br />
{<br />
ImageCopy($cImg,$proImg,0,($toH-$ftoH)/2,0,0,$ftoW,$ftoH);<br />
}<br />
else<br />
{<br />
ImageCopy($cImg,$proImg,0,0,0,0,$ftoW,$ftoH);<br />
}<br />
}<br />
else<br />
{<br />
ImageCopyMerge($cImg,$this-&gt;im,($toW-$ftoW)/2,($toH-$ftoH)/2,0,0,$ftoW,$ftoH,100);<br />
}<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
}</p>
<p>function CreatImage($img,$creatW,$creatH,$dstX,$dstY,$srcX,$srcY,$srcImgW,$srcImgH)<br />
{<br />
if(function_exists("imagecreatetruecolor"))<br />
{<br />
@$creatImg = ImageCreateTrueColor($creatW,$creatH);<br />
if($creatImg)<br />
ImageCopyResampled($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);<br />
else<br />
{<br />
$creatImg=ImageCreate($creatW,$creatH);<br />
ImageCopyResized($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);<br />
}<br />
}<br />
else<br />
{<br />
$creatImg=ImageCreate($creatW,$creatH);<br />
ImageCopyResized($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);<br />
}<br />
return $creatImg;<br />
}</p>
<p>//输出图片，link---只输出，不保存文件。file--保存为文件<br />
function EchoImage($img,$to_File)<br />
{<br />
switch($this-&gt;echoType)<br />
{<br />
case "link":<br />
if(function_exists('imagejpeg')) return ImageJpeg($img);<br />
else return ImagePNG($img);<br />
break;<br />
case "file":<br />
if(function_exists('imagejpeg')) return ImageJpeg($img,$to_File);<br />
else return ImagePNG($img,$to_File);<br />
break;<br />
}<br />
}</p>
<p>}<br />
?&gt;<br />
&lt;?<br />
if ($_POST["action"]=="addnew") {<br />
$pxname="";<br />
if(!$_FILES['myphoto']['error']){<br />
$f=$_FILES['myphoto'];<br />
$kzm=strtolower(trim(substr($f['name'],-4)));<br />
if($kzm!=".jpg" and $kzm!=".gif" and $kzm!=".png" and $kzm!=".bmp")<br />
{<br />
echo "&lt;script&gt;alert('图片格式不对!($kzm)');location.href='javascript:history.back()';&lt;/script&gt;";<br />
die;<br />
}<br />
$dest_dir='images';//设定上传目录<br />
$pxname=date("ymdhis")."_"."s".substr($f['name'],-4);<br />
$dest=$dest_dir.'/'.$pxname;//我这里设置文件名为日期加上文件名避免重复<br />
$r=move_uploaded_file($f['tmp_name'],$dest);<br />
chmod($dest, 0755);//设定上传的文件的属性<br />
}</p>
<p>$cm=new CreatMiniature();<br />
$cm-&gt;SetVar("images/".$pxname,"file");<br />
$cm-&gt;Prorate("images/".$pxname,150,200);<br />
}<br />
?&gt;</p>
<p>&lt;?<br />
//使用示例<br />
//    include("thumb.php");<br />
//    $cm=new CreatMiniature();<br />
//    $cm-&gt;SetVar("1.jpg","file");<br />
//    $cm-&gt;Distortion("dis_bei.jpg",150,200);<br />
//    $cm-&gt;Prorate("pro_bei.jpg",150,200);<br />
//    $cm-&gt;Cut("cut_bei.jpg",150,200);<br />
//    $cm-&gt;BackFill("fill_bei.jpg",150,200);&lt;/p&gt;<br />
?&gt;</p>
<p>&lt;p&gt;&amp;nbsp;&lt;/p&gt;<br />
&lt;p&gt;&amp;nbsp;&lt;/p&gt;<br />
&lt;form name="form1" enctype="multipart/form-data" method="post" action=""&gt;<br />
&lt;input name="myphoto" type="file" id="myphoto"&gt;<br />
&lt;input type="submit" name="Submit" value="提交"&gt;<br />
&lt;input name="action" type="hidden" id="action" value="addnew"&gt;<br />
&lt;/form&gt;<br />
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-upload-pic-cc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>可用的PHP汉字转拼音代码</title>
		<link>http://www.3code.cn/php-pinyin/</link>
		<comments>http://www.3code.cn/php-pinyin/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 06:33:55 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 函数]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2068</guid>
		<description><![CDATA[经过测试这是一段可以用的将汉字转换为拼音的代码。
支持UTF-8编码的汉字]]></description>
			<content:encoded><![CDATA[<p>&lt;?<br />
//经过测试这是一段可以用的将汉字转换为拼音的代码。<br />
//支持UTF-8编码的汉字<br />
$d=array(<br />
array("a",-20319),<br />
array("ai",-20317),<br />
array("an",-20304),<br />
array("ang",-20295),<br />
array("ao",-20292),<br />
array("ba",-20283),<br />
array("bai",-20265),<br />
array("ban",-20257),<br />
array("bang",-20242),<br />
array("bao",-20230),<br />
array("bei",-20051),<br />
array("ben",-20036),<br />
array("beng",-20032),<br />
array("bi",-20026),<br />
array("bian",-20002),<br />
array("biao",-19990),<br />
array("bie",-19986),<br />
array("bin",-19982),<br />
array("bing",-19976),<br />
array("bo",-19805),<br />
array("bu",-19784),<br />
array("ca",-19775),<br />
array("cai",-19774),<br />
array("can",-19763),<br />
array("cang",-19756),<br />
array("cao",-19751),<br />
array("ce",-19746),<br />
array("ceng",-19741),<br />
array("cha",-19739),<br />
array("chai",-19728),<br />
array("chan",-19725),<br />
array("chang",-19715),<br />
array("chao",-19540),<br />
array("che",-19531),<br />
array("chen",-19525),<br />
array("cheng",-19515),<br />
array("chi",-19500),<br />
array("chong",-19484),<br />
array("chou",-19479),<br />
array("chu",-19467),<br />
array("chuai",-19289),<br />
array("chuan",-19288),<br />
array("chuang",-19281),<br />
array("chui",-19275),<br />
array("chun",-19270),<br />
array("chuo",-19263),<br />
array("ci",-19261),<br />
array("cong",-19249),<br />
array("cou",-19243),<br />
array("cu",-19242),<br />
array("cuan",-19238),<br />
array("cui",-19235),<br />
array("cun",-19227),<br />
array("cuo",-19224),<br />
array("da",-19218),<br />
array("dai",-19212),<br />
array("dan",-19038),<br />
array("dang",-19023),<br />
array("dao",-19018),<br />
array("de",-19006),<br />
array("deng",-19003),<br />
array("di",-18996),<br />
array("dian",-18977),<br />
array("diao",-18961),<br />
array("die",-18952),<br />
array("ding",-18783),<br />
array("diu",-18774),<br />
array("dong",-18773),<br />
array("dou",-18763),<br />
array("du",-18756),<br />
array("duan",-18741),<br />
array("dui",-18735),<br />
array("dun",-18731),<br />
array("duo",-18722),<br />
array("e",-18710),<br />
array("en",-18697),<br />
array("er",-18696),<br />
array("fa",-18526),<br />
array("fan",-18518),<br />
array("fang",-18501),<br />
array("fei",-18490),<br />
array("fen",-18478),<br />
array("feng",-18463),<br />
array("fo",-18448),<br />
array("fou",-18447),<br />
array("fu",-18446),<br />
array("ga",-18239),<br />
array("gai",-18237),<br />
array("gan",-18231),<br />
array("gang",-18220),<br />
array("gao",-18211),<br />
array("ge",-18201),<br />
array("gei",-18184),<br />
array("gen",-18183),<br />
array("geng",-18181),<br />
array("gong",-18012),<br />
array("gou",-17997),<br />
array("gu",-17988),<br />
array("gua",-17970),<br />
array("guai",-17964),<br />
array("guan",-17961),<br />
array("guang",-17950),<br />
array("gui",-17947),<br />
array("gun",-17931),<br />
array("guo",-17928),<br />
array("ha",-17922),<br />
array("hai",-17759),<br />
array("han",-17752),<br />
array("hang",-17733),<br />
array("hao",-17730),<br />
array("he",-17721),<br />
array("hei",-17703),<br />
array("hen",-17701),<br />
array("heng",-17697),<br />
array("hong",-17692),<br />
array("hou",-17683),<br />
array("hu",-17676),<br />
array("hua",-17496),<br />
array("huai",-17487),<br />
array("huan",-17482),<br />
array("huang",-17468),<br />
array("hui",-17454),<br />
array("hun",-17433),<br />
array("huo",-17427),<br />
array("ji",-17417),<br />
array("jia",-17202),<br />
array("jian",-17185),<br />
array("jiang",-16983),<br />
array("jiao",-16970),<br />
array("jie",-16942),<br />
array("jin",-16915),<br />
array("jing",-16733),<br />
array("jiong",-16708),<br />
array("jiu",-16706),<br />
array("ju",-16689),<br />
array("juan",-16664),<br />
array("jue",-16657),<br />
array("jun",-16647),<br />
array("ka",-16474),<br />
array("kai",-16470),<br />
array("kan",-16465),<br />
array("kang",-16459),<br />
array("kao",-16452),<br />
array("ke",-16448),<br />
array("ken",-16433),<br />
array("keng",-16429),<br />
array("kong",-16427),<br />
array("kou",-16423),<br />
array("ku",-16419),<br />
array("kua",-16412),<br />
array("kuai",-16407),<br />
array("kuan",-16403),<br />
array("kuang",-16401),<br />
array("kui",-16393),<br />
array("kun",-16220),<br />
array("kuo",-16216),<br />
array("la",-16212),<br />
array("lai",-16205),<br />
array("lan",-16202),<br />
array("lang",-16187),<br />
array("lao",-16180),<br />
array("le",-16171),<br />
array("lei",-16169),<br />
array("leng",-16158),<br />
array("li",-16155),<br />
array("lia",-15959),<br />
array("lian",-15958),<br />
array("liang",-15944),<br />
array("liao",-15933),<br />
array("lie",-15920),<br />
array("lin",-15915),<br />
array("ling",-15903),<br />
array("liu",-15889),<br />
array("long",-15878),<br />
array("lou",-15707),<br />
array("lu",-15701),<br />
array("lv",-15681),<br />
array("luan",-15667),<br />
array("lue",-15661),<br />
array("lun",-15659),<br />
array("luo",-15652),<br />
array("ma",-15640),<br />
array("mai",-15631),<br />
array("man",-15625),<br />
array("mang",-15454),<br />
array("mao",-15448),<br />
array("me",-15436),<br />
array("mei",-15435),<br />
array("men",-15419),<br />
array("meng",-15416),<br />
array("mi",-15408),<br />
array("mian",-15394),<br />
array("miao",-15385),<br />
array("mie",-15377),<br />
array("min",-15375),<br />
array("ming",-15369),<br />
array("miu",-15363),<br />
array("mo",-15362),<br />
array("mou",-15183),<br />
array("mu",-15180),<br />
array("na",-15165),<br />
array("nai",-15158),<br />
array("nan",-15153),<br />
array("nang",-15150),<br />
array("nao",-15149),<br />
array("ne",-15144),<br />
array("nei",-15143),<br />
array("nen",-15141),<br />
array("neng",-15140),<br />
array("ni",-15139),<br />
array("nian",-15128),<br />
array("niang",-15121),<br />
array("niao",-15119),<br />
array("nie",-15117),<br />
array("nin",-15110),<br />
array("ning",-15109),<br />
array("niu",-14941),<br />
array("nong",-14937),<br />
array("nu",-14933),<br />
array("nv",-14930),<br />
array("nuan",-14929),<br />
array("nue",-14928),<br />
array("nuo",-14926),<br />
array("o",-14922),<br />
array("ou",-14921),<br />
array("pa",-14914),<br />
array("pai",-14908),<br />
array("pan",-14902),<br />
array("pang",-14894),<br />
array("pao",-14889),<br />
array("pei",-14882),<br />
array("pen",-14873),<br />
array("peng",-14871),<br />
array("pi",-14857),<br />
array("pian",-14678),<br />
array("piao",-14674),<br />
array("pie",-14670),<br />
array("pin",-14668),<br />
array("ping",-14663),<br />
array("po",-14654),<br />
array("pu",-14645),<br />
array("qi",-14630),<br />
array("qia",-14594),<br />
array("qian",-14429),<br />
array("qiang",-14407),<br />
array("qiao",-14399),<br />
array("qie",-14384),<br />
array("qin",-14379),<br />
array("qing",-14368),<br />
array("qiong",-14355),<br />
array("qiu",-14353),<br />
array("qu",-14345),<br />
array("quan",-14170),<br />
array("que",-14159),<br />
array("qun",-14151),<br />
array("ran",-14149),<br />
array("rang",-14145),<br />
array("rao",-14140),<br />
array("re",-14137),<br />
array("ren",-14135),<br />
array("reng",-14125),<br />
array("ri",-14123),<br />
array("rong",-14122),<br />
array("rou",-14112),<br />
array("ru",-14109),<br />
array("ruan",-14099),<br />
array("rui",-14097),<br />
array("run",-14094),<br />
array("ruo",-14092),<br />
array("sa",-14090),<br />
array("sai",-14087),<br />
array("san",-14083),<br />
array("sang",-13917),<br />
array("sao",-13914),<br />
array("se",-13910),<br />
array("sen",-13907),<br />
array("seng",-13906),<br />
array("sha",-13905),<br />
array("shai",-13896),<br />
array("shan",-13894),<br />
array("shang",-13878),<br />
array("shao",-13870),<br />
array("she",-13859),<br />
array("shen",-13847),<br />
array("sheng",-13831),<br />
array("shi",-13658),<br />
array("shou",-13611),<br />
array("shu",-13601),<br />
array("shua",-13406),<br />
array("shuai",-13404),<br />
array("shuan",-13400),<br />
array("shuang",-13398),<br />
array("shui",-13395),<br />
array("shun",-13391),<br />
array("shuo",-13387),<br />
array("si",-13383),<br />
array("song",-13367),<br />
array("sou",-13359),<br />
array("su",-13356),<br />
array("suan",-13343),<br />
array("sui",-13340),<br />
array("sun",-13329),<br />
array("suo",-13326),<br />
array("ta",-13318),<br />
array("tai",-13147),<br />
array("tan",-13138),<br />
array("tang",-13120),<br />
array("tao",-13107),<br />
array("te",-13096),<br />
array("teng",-13095),<br />
array("ti",-13091),<br />
array("tian",-13076),<br />
array("tiao",-13068),<br />
array("tie",-13063),<br />
array("ting",-13060),<br />
array("tong",-12888),<br />
array("tou",-12875),<br />
array("tu",-12871),<br />
array("tuan",-12860),<br />
array("tui",-12858),<br />
array("tun",-12852),<br />
array("tuo",-12849),<br />
array("wa",-12838),<br />
array("wai",-12831),<br />
array("wan",-12829),<br />
array("wang",-12812),<br />
array("wei",-12802),<br />
array("wen",-12607),<br />
array("weng",-12597),<br />
array("wo",-12594),<br />
array("wu",-12585),<br />
array("xi",-12556),<br />
array("xia",-12359),<br />
array("xian",-12346),<br />
array("xiang",-12320),<br />
array("xiao",-12300),<br />
array("xie",-12120),<br />
array("xin",-12099),<br />
array("xing",-12089),<br />
array("xiong",-12074),<br />
array("xiu",-12067),<br />
array("xu",-12058),<br />
array("xuan",-12039),<br />
array("xue",-11867),<br />
array("xun",-11861),<br />
array("ya",-11847),<br />
array("yan",-11831),<br />
array("yang",-11798),<br />
array("yao",-11781),<br />
array("ye",-11604),<br />
array("yi",-11589),<br />
array("yin",-11536),<br />
array("ying",-11358),<br />
array("yo",-11340),<br />
array("yong",-11339),<br />
array("you",-11324),<br />
array("yu",-11303),<br />
array("yuan",-11097),<br />
array("yue",-11077),<br />
array("yun",-11067),<br />
array("za",-11055),<br />
array("zai",-11052),<br />
array("zan",-11045),<br />
array("zang",-11041),<br />
array("zao",-11038),<br />
array("ze",-11024),<br />
array("zei",-11020),<br />
array("zen",-11019),<br />
array("zeng",-11018),<br />
array("zha",-11014),<br />
array("zhai",-10838),<br />
array("zhan",-10832),<br />
array("zhang",-10815),<br />
array("zhao",-10800),<br />
array("zhe",-10790),<br />
array("zhen",-10780),<br />
array("zheng",-10764),<br />
array("zhi",-10587),<br />
array("zhong",-10544),<br />
array("zhou",-10533),<br />
array("zhu",-10519),<br />
array("zhua",-10331),<br />
array("zhuai",-10329),<br />
array("zhuan",-10328),<br />
array("zhuang",-10322),<br />
array("zhui",-10315),<br />
array("zhun",-10309),<br />
array("zhuo",-10307),<br />
array("zi",-10296),<br />
array("zong",-10281),<br />
array("zou",-10274),<br />
array("zu",-10270),<br />
array("zuan",-10262),<br />
array("zui",-10260),<br />
array("zun",-10256),<br />
array("zuo",-10254));</p>
<p>function g($num){<br />
global $d;<br />
if($num&gt;0&amp;$num&lt;160){<br />
return chr($num);<br />
}<br />
elseif($num&lt;-20319||$num&gt;-10247){<br />
return "";<br />
}else{<br />
for($i=count($d)-1;$i&gt;=0;$i--)<br />
{if($d[$i][1]&lt;=$num)break;}<br />
return $d[$i][0];<br />
}<br />
}<br />
function c($str){<br />
$ret="";<br />
for($i=0;$i&lt;strlen($str);$i++){<br />
$p=ord(substr($str,$i,1));<br />
if($p&gt;160){<br />
$q=ord(substr($str,++$i,1));<br />
$p=$p*256+$q-65536;<br />
}<br />
$ret.=g($p);<br />
}<br />
return $ret;<br />
}</p>
<p>function utf82gb($utfstr){ // UTF-8汉字转GBK汉字<br />
if(function_exists('iconv')){ return iconv('utf-8','gbk',$utfstr); }<br />
global $UC2GBTABLE;<br />
$okstr = "";<br />
if(trim($utfstr)=="") return $utfstr;<br />
if(empty($UC2GBTABLE)){<br />
$filename = dirname(__FILE__) . "/";<br />
$fp = fopen($filename,"r");<br />
while($l = fgets($fp,15))<br />
{ $UC2GBTABLE[hexdec(substr($l, 7, 6))] = hexdec(substr($l, 0, 6));}<br />
fclose($fp);<br />
}<br />
$okstr = "";<br />
$ulen = strlen($utfstr);<br />
for($i=0;$i&lt;$ulen;$i++)<br />
{<br />
$c = $utfstr[$i];<br />
$cb = decbin(ord($utfstr[$i]));<br />
if(strlen($cb)==8){<br />
$csize = strpos(decbin(ord($cb)),"0");<br />
for($j=0;$j &lt; $csize;$j++){<br />
$i++; $c .= $utfstr[$i];<br />
}<br />
$c = utf82u($c);<br />
if(isset($UC2GBTABLE[$c])){<br />
$c = dechex($UC2GBTABLE[$c]+0x8080);<br />
$okstr .= chr(hexdec($c[0].$c[1])).chr(hexdec($c[2].$c[3]));<br />
}<br />
else<br />
{ $okstr .= "&amp;#".$c.";";}<br />
}<br />
else $okstr .= $c;<br />
}<br />
$okstr = trim($okstr);<br />
return $okstr;<br />
}<br />
//说明：将中文转换为拼音&lt;br&gt;";<br />
//如果是utf—8中文 先转换为gbk中文 再转换<br />
//$str = utf82gb($str);<br />
// utf8中文 装gbk中文<br />
//示例:<br />
//echo c($str);<br />
?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-pinyin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

