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的编码下的结果。