<span>public</span> <span>function</span> utf8_unicode(<span>$str</span><span>) { </span><span>$unicode</span> = <span>array</span><span>(); </span><span>$values</span> = <span>array</span><span>(); </span><span>$lookingFor</span> = 1<span>; </span><span>for</span> (<span>$i</span> = 0; <span>$i</span> < <span>strlen</span>( <span>$str</span> ); <span>$i</span>++<span> ) { </span><span>$thisValue</span> = <span>ord</span>( <span>$str</span>[ <span>$i</span><span> ] ); </span><span>if</span> ( <span>$thisValue</span> < <span>ord</span>('A'<span>) ) { </span><span>//</span><span> exclude 0-9</span> <span>if</span> (<span>$thisValue</span> >= <span>ord</span>('0') && <span>$thisValue</span> <= <span>ord</span>('9'<span>)) { </span><span>//</span><span> number</span> <span>$unicode</span>[] = <span>chr</span>(<span>$thisValue</span><span>); } </span><span>else</span><span> { </span><span>$unicode</span>[] = '%'.<span>dechex</span>(<span>$thisValue</span><span>); } } </span><span>else</span><span> { </span><span>if</span> ( <span>$thisValue</span> < 128<span>) { </span><span>$unicode</span>[] = <span>$str</span>[ <span>$i</span><span> ]; } </span><span>else</span><span> { </span><span>if</span> ( <span>count</span>( <span>$values</span> ) == 0<span> ) { </span><span>$lookingFor</span> = ( <span>$thisValue</span> < 224 ) ? 2 : 3<span>; } </span><span>$values</span>[] = <span>$thisValue</span><span>; </span><span>if</span> ( <span>count</span>( <span>$values</span> ) == <span>$lookingFor</span><span> ) { </span><span>$number</span> = ( <span>$lookingFor</span> == 3 ) ?<span> ( ( </span><span>$values</span>[0] % 16 ) * 4096 ) + ( ( <span>$values</span>[1] % 64 ) * 64 ) + ( <span>$values</span>[2] % 64 ):<span> ( ( </span><span>$values</span>[0] % 32 ) * 64 ) + ( <span>$values</span>[1] % 64<span> ); </span><span>$number</span> = <span>dechex</span>(<span>$number</span><span>); </span><span>$unicode</span>[] = (<span>strlen</span>(<span>$number</span>)==3)?"\u0".<span>$number</span>:"\u".<span>$number</span><span>; </span><span>$values</span> = <span>array</span><span>(); </span><span>$lookingFor</span> = 1<span>; } </span><span>//</span><span> if</span> } <span>//</span><span> if</span> <span> } } </span><span>//</span><span> for</span> <span>return</span> <span>implode</span>("",<span>$unicode</span><span>); }</span>
参考記事:http://randomchaos.com/documents/?source=php_and_unicode