<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[PHP字符串mbstring处理中文字符串的具体方法解析,不重新编译php，增加动态模块(以mbstring模块为例)。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Fri, 11 Jun 2010 14:54:35 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	问题：<br/>PHP 中文截取UTF8的编码 16个字符 有没有现成的，多了用...。<br/>回答：<br/>mbstring<br/>问道：那中文一个字占用多长，E文标点多长？<br/>回答：<br/>mb都认为是一个<br/><br/><br/><br/>大家通过对PHP的学习，可以运用这一高级语言创建一个性能较高的网站。对于初学者来说，对于PHP字符串mbstring还是比较陌生的，下面我们就来介绍一下PHP字符串mbstring的具体应用。 mysql<br/><br/>　　多国语言并存就意味着多字节，PHP内置的字符串长度函数strlen无法正确处理中文字符串，它得到的只是字符串所占的字节数。对于 GB2312的中文编码，strlen得到的值是汉字个数的2倍，而对于UTF-8编码的中文，就是1~3倍的差异了。<br/>mysql<br/><br/>　　采用PHP字符串mbstring可以较好地解决这个问题。mb_strlen的用法和strlen类似，只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度，可以用mb_strlen($str,’UTF-8′)。如果省略第二个参数，则会使用PHP的内部编码。内部编码可以通过mb_internal_encoding()函数得到，设置有两种方式：<br/>linux<br/><br/>　　1. 在php.ini中设置mbstring.internal_encoding = UTF-8<br/>ssh<br/><br/>　　2. 调用mb_internal_encoding(”GBK”) unix<br/><br/>　　除了PHP字符串mbstring,还有很多切割函数，其中mb_substr是按字来切分字符，而mb_strcut是按字节来切分字符，但是都不会产生半个字符的现象。而且从函数切割对长度的作用也不同，mb_strcut的切割条件是小于strlen, mb_substr是等于strlen，看下面的例子，<br/><br/>mysql<br/><br/>　　&lt; ? $str = ‘我是一串比较长的中文-www.jefflei.com’; echo “mb_substr:” . mb_substr($str, 0, 6, ‘utf-8′); echo ” “; echo “mb_strcut:” . mb_strcut($str, 0, 6, ‘utf-8′); ?&gt; unix<br/><br/>　　输出如下： ssh<br/><br/>　　mb_substr：我是一串比较<br/><br/>oracle<br/><br/>　　mb_strcut：我是 linux<br/><br/>　　需要注意的是，PHP字符串mbstring并不是PHP核心函数，使用前需要确保在php编译模块时加入mbstring的支持：<br/><br/>unix<br/><br/>　　(1)编译时使用–enable-mbstring linux<br/><br/>　　(2)修改/usr/local/lib/php.inc oracle<br/><br/>　　default_charset = “zh-cn”<br/><br/>unix<br/><br/>　　mbstring.language = zh-cn oracle<br/><br/>　　mbstring.internal_encoding =zh-cn<br/><br/>mysql<br/><br/>　　PHP字符串mbstring类库内容比较多，还包括mb_ send_ mail 之类的email处理函数等 ssh <br/><div class="code"><br/>mbstring.internal_encoding = UTF-8<br/>mbstring.http_input = auto<br/>mbstring.http_output = SJIS<br/>mbstring.detect_order = auto<br/>mbstring.substitute_character = none<br/></div><br/><br/><br/><br/><br/>&nbsp;&nbsp;php内置的substr无法解决截取中文字符串的乱码问题：<br/><textarea name="code" class="php" rows="15" cols="100">
&nbsp;&nbsp; php内置的substr无法解决截取中文字符串的乱码问题，在php.ini打开extension=php_mbstring.dll支持的情况下，可以使用mb_substr完美解决中文截取
</textarea><br/>要使用到的函数：mb_substr和mb_strlen。<br/><textarea name="code" class="php" rows="15" cols="100">

&lt;?php
echo mb_substr(&#039;你，e妹&#039;, 0, 3, &#039;UTF-8&#039;);//测试结果：你，e 【所以：都认为是一个。】
?&gt;

</textarea><br/>mb_substr使用方法：mb_substr(&quot;我是要被截取的中文字符串&quot;,开始位置, 要截取的长度, 字符串的编码)；实例：mb_substr(&quot;我是要被截取的中文字符串&quot;,0, 3, &#039;gbk&#039;)；结果将是“我是要”；这个函数可以解决字符串中包含中文、英文、数字、字符各种类型的字符串。<br/>在实际使用过程中需要和mb_strlen配合使用，mb_strlen的使用方法和strlen类似，只是多了一个编码参数：mb_strlen(&quot;我是要被计算长度的字符&quot;, &quot;gbk&quot;)；结果是11。<br/>详细的使用例子：<br/>比如字符串超过20个就需要截取：<br/>if(mb_strlen($str, &quot;gbk&quot;) &gt;20)<br/>&#123;<br/>&nbsp;&nbsp;$str = mb_substr($str, 0, 20, &quot;gbk&quot;);<br/>&#125;<br/><br/>————————————————————————————————————————————————————<br/>1 进入php源代码目录中的mbstring所在目录<br/>cd /usr/local/src/php-5.2.4/ext/mbstring/<br/>2 执行php安装后目录中的bin/phpize文件<br/>/usr/local/php/bin/phpize<br/>3 进入php源代码目录<br/>cd /usr/local/src/php-5.2.4/<br/>4 执行上述目录中的configure文件<br/>./configure --prefix=/usr/local/src/php-5.2.4/ext/mbstring --with-php-config=/usr/local/php/bin/php-config<br/>5 make; make install<br/>将mbstring.so安装到/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/中<br/>6 编辑php.ini，加入一行<br/>extension=mbstring.so<br/>7 重新启动httpd<br/>service httpd restart<br/>(如果是php-cgi模式的，请先杀掉所有的php-cgi进程，再重启httpd)<br/><br/>来自：http://blog.cntv.cn/11430895-3105278.html
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] PHP字符串mbstring处理中文字符串的具体方法解析,不重新编译php，增加动态模块(以mbstring模块为例)。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>