<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.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://www.jackxiang.com/post//</link>
<title><![CDATA[php chr() ord() 获取ASCII编码 中文截取，在调试网页时的空格，回车等不可见字符、隐形字符可以用上。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Fri, 05 Nov 2010 07:12:58 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<textarea name="code" class="php" rows="15" cols="100">
&lt;?php
$str = &quot; &quot;;
echo ord($str);

?&gt;
</textarea><br/>来自：http://cn.voidcc.com/question/p-rjdaikmm-ra.html<br/><br/>ASCII编码是计算机所能显示字符的编码，它的取值范围是0-255，其中包括标点、字母、数字、汉字等。在编程过程中，经常把指定的字符转化为ASCII码进行比较。<br/>cat a.php<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
$str=&lt;&lt;&lt;EOF
a&nbsp;&nbsp;b&nbsp;&nbsp;c&nbsp;&nbsp;d
EOF;
echo $str;
for($i=0;$i&lt;mb_strlen($str);$i++)&#123;
&nbsp;&nbsp; echo $i.&quot;:&quot;.$str[$i].&quot;=&quot;.ord($str[$i]).&quot;&#92;n&quot;;
&#125;

</textarea><br/>输出：9 就是ASCII码的：09&nbsp;&nbsp; 水平定位符号<br/><br/>ASCII码表：<a href="http://ascii.911cha.com/?year=09" target="_blank">http://ascii.911cha.com/?year=09</a><br/>php a.php<br/><textarea name="code" class="php" rows="15" cols="100">
a&nbsp;&nbsp;b&nbsp;&nbsp;c&nbsp;&nbsp;d0:a=97
1:&nbsp;&nbsp;=9
2:b=98
3:&nbsp;&nbsp;=9
4:c=99
5:&nbsp;&nbsp;=9
6:d=100
</textarea><br/><br/>最后，发现用终端复制就行，用vscode就不行，经下面这段代码测试，发现是终端可以输出&#92;n这种不可见字符，而vscode在复制时这个没了，于是word就会出现错乱。<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
echo &quot;1&nbsp;&nbsp;2&nbsp;&nbsp;3&nbsp;&nbsp;4&#92;n&quot;;&nbsp;&nbsp; //没有&#92;n的输出直接粘贴word会错乱。
</textarea><br/><br/>直接终端复制就可以。<br/>也可php aaaa.php&#124;pbcopy <br/>即使不加换行&#92;n，也能正常粘贴到表格里。<br/>php aaaa.php&#124;pbcopy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#证明pbcopy 会在行尾加换行。<br/><br/><textarea name="code" class="php" rows="15" cols="100">
cat aaaa.php
&lt;?php
echo &quot;1&nbsp;&nbsp;2&nbsp;&nbsp;3&nbsp;&nbsp;4&#92;n&quot;;
echo &quot;1111&nbsp;&nbsp;2&nbsp;&nbsp;3&nbsp;&nbsp;4&quot;;
</textarea><br/><br/>下面是PHP提供的转换ASCII码和字符的函数。<br/>1．chr()函数<br/>该函数用于将ASCII码值转化为字符串。其函数声明如下：<br/>string chr (int ascii);<br/>2．ord()函数<br/>该函数用于将字符串转化为ASCII码值。其函数声明如下：<br/>int ord(string str);<br/>示例：<br/>使用chr()函数和ord()函数进行字符串与ASCII码之间的转换，程序代码如下：<br/><br/><div class="code">&lt;?php<br/>$str1=chr(88);<br/>echo $str1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//返回值为X<br/>echo &quot;t&quot;;<br/>$str2=ord(&#039;S&#039;);<br/>echo $str2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//返回值为83<br/>?&gt;</div>中文字符截取<br/>ord() chr() int() intval() 的区别<br/>ord()-&gt;本函数返回字符的 ASCII (美国国家标准交换码) 序数值。本函数和 chr() 函数相反<br/>php chr() ord()中文截取乱码问题解决方法<br/><br/><br/><div class="code">&lt;?php <br/>$lenth = 19; <br/>$str = &quot;怎么将新闻的很长的标题只显示前面一些字，后面用.....来代替？&quot;; <br/>echo strlen($str)&lt;=$lenth ? $str : (substr($str,0,$lenth).chr(0).&quot;....&quot;); <br/>?&gt;</div><div class="code">&lt;? <br/>/* <br/>@ 另一种方法，使用ord()函数： <br/>@ 适用于 gb2312 编码: <br/>*/ <br/>$str = &quot;怎么将新闻的很长的标题只显示前面一些字，后面用.....来代替？&quot;; <br/>function gb2312_substr($str, $limit) &#123; <br/>$restr =&#039;&#039;; <br/>for($i=0;$i&lt; $limit-3;$i++) &#123; <br/>$restr .= ord($str&#91;$i&#93;)&gt;127 ? $str&#91;$i&#93;.$str&#91;++$i&#93; : $str&#91;$i&#93;; <br/>&#125; <br/>return $restr; <br/>&#125; <br/>/* <br/>@ 以下仅适用于 utf-8 编码; <br/>*/ <br/>function utf8_substr($str, $limit) &#123; <br/>$restr = &#039;&#039;; <br/>for($i=0;$i&lt; $limit-3;$i++) &#123; <br/>$restr .= ord($str&#91;$i&#93;)&gt;127 ? $str&#91;$i&#93;.$str&#91;++$i&#93;.$str&#91;++$i&#93; : $str&#91;$i&#93;; <br/>&#125; <br/>return $restr; <br/>&#125;</div><br/><br/>另外一种方法：<br/><br/><div class="code">/**<br/>* 截取UTF-8编码下字符串的函数<br/>*<br/>* @access public<br/>* @param&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 被截取的字符串<br/>* @param&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 截取的起始位置<br/>* @param&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$length&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;截取的长度<br/>* @param&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $append&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是否附加省略号<br/>* @return null<br/>*/<br/>function sub_str($str, $start=0, $length=0, $append=true)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $str = trim($str);<br/>&nbsp;&nbsp;&nbsp;&nbsp; $reval = &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; if (0 == $length)<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $length = strlen($str);<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; elseif (0 &gt; $length)<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $length = strlen($str) + $length;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; if (strlen($str) &lt;= $length) return $str;<br/>&nbsp;&nbsp;&nbsp;&nbsp; for($i = 0; $i &lt; $length; $i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!isset($str&#91;$i&#93;)) break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (196 &lt;= ord($str&#91;$i&#93;))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $i += 2 ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $start += 2;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; if ($i &gt;= $start) $reval = substr($str, 0, $i);<br/>&nbsp;&nbsp;&nbsp;&nbsp; if ($i &lt; strlen($str) &amp;&amp; $append) $reval .= &quot;...&quot;;<br/>return $reval;<br/>&#125;</div>//解释下上面第一个：chr(0)不是null,null是什么都没有，而chr(0)的值是0。表示成16进制是0x00，表示成二进制是00000000虽然chr(0)不会显示出什么，但是他是一个字符。虽然chr(0)不会显示出什么，但是他是一个字符。当汉字被截断时，根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释，这就是出现乱码的原因。 <br/>?&gt;<br/>ord.php:<br/>[/code]<br/><div class="code">&lt;?php<br/>$a = chr(0);<br/>printf(&quot;0x%x&quot;,$a);<br/>?&gt;</div><br/># php ord.php <br/>0x0<br/>来源：http://www.freesear.com/read.php?tid=4461
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] php chr() ord() 获取ASCII编码 中文截取，在调试网页时的空格，回车等不可见字符、隐形字符可以用上。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>