UTF-8编码下PHP全角符号替换成半角

现在web中的一种元素就是tag,即为标签,咱们发表很多新闻,或者上传图片给图片描述,都会用到tag,输入tag的时候往往对于中文用户来说会有全角标点符号,传统的标点分隔符是逗号,所以在处理逗号的时候就会有一些小技巧。

1、假设网页编码格式为GBK,那么其实在输入端就很方便的进行控制了,自动的将输入的中文逗号“,”(或者空格等其他符号)转换成英文逗号“,”,转换逗号的代码如下:

<input  name="tags" type="text" id="tags" value="<?php echo $tags; ?>"  onkeyup="this.value=this.value.replace(/,/g, ','); " />

2、当在UTF-8编码时候,就要进行一番转码操作了,其实也很简单,代码如下:

<?php
$tags = "0123ABCDFWS\",.?<>{}[]*&^%#@!~()+-|:;";
print_r($tags);
$tags = iconv('utf-8', 'gbk', $tags);
$tags = preg_replace('/\xa3([\xa1-\xfe])/e', 'chr(ord(\1)-0x80)', $tags);
$tags = iconv( 'gbk', 'utf-8', $tags);
print_r($tags);
?>

原理:所有的中文字符的第二个字节减去0X80(即128)所得的数字就是半角所得的数字了。
这里使用了正则表达式替换函数 preg_replace()。

这样就可以成功转换了,不转吗转换是没有效果的,所以网上的代码一般都是在gbk的编码下的结果。

posted @ 2013-11-01 11:46  Kiwi0921  阅读(965)  评论(0编辑  收藏  举报