PHP 全角转半角实现代码


Posted in PHP onMay 16, 2010
/** 
* 将一个字串中含有全角的数字字符、字母、空格或'%+-()'字符转换为相应半角字符 
* @access public 
* @param string $str 待转换字串 
* @return string $str 处理后字串 
*/ 
function make_semiangle($str) 
{ 
$arr = array('0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4','5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', 'A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E','F' => 'F', 'G' => 'G', 'H' => 'H', 'I' => 'I', 'J' => 'J', 'K' => 'K', 'L' => 'L', 'M' => 'M', 'N' => 'N', 'O' => 'O','P' => 'P', 'Q' => 'Q', 'R' => 'R', 'S' => 'S', 'T' => 'T',U' => 'U', 'V' => 'V', 'W' => 'W', 'X' => 'X', 'Y' => 'Y','Z' => 'Z', 'a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd','e' => 'e', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i','j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n','o' => 'o', 'p' => 'p', 'q' => 'q', 'r' => 'r', 's' => 's', 't' => 't', 'u' => 'u', 'v' => 'v', 'w' => 'w', 'x' => 'x', 'y' => 'y', 'z' => 'z','(' => '(', ')' => ')', '〔' => '[', '〕' => ']', '【' => '[','】' => ']', '〖' => '[', '〗' => ']', '“' => '[', '”' => ']','‘' => '[', ''' => ']', '{' => '{', '}' => '}', '《' => '<','》' => '>','%' => '%', '+' => '+', '—' => '-', '-' => '-', '~' => '-',':' => ':', '。' => '.', '、' => ',', ',' => '.', '、' => '.', ';' => ',', '?' => '?', '!' => '!', '…' => '-', '‖' => '|', '”' => '"', ''' => '`', '‘' => '`', '|' => '|', '〃' => '"',' ' => ' '); 
return strtr($str, $arr); 
}
<?php 
$str = "0123ABCDFWS\",.?<>{}[]*&^%#@!~()+-|:;"; 
echo "$str"; 
echo "<br />"; 
$str = preg_replace('/\xa3([\xa1-\xfe])/e', 'chr(ord(\1)-0x80)', $str); 
echo $str; 
?>

另外为大家分享一个函数

在许多收集用户信息的表单里,期望用户输入的是半角字符,但是无论你如何强调,如何提醒,还是会有粗心的用户提交全角数据,其实,在一些新手眼中,全角和半角根本就没有区别,甚至他们会觉得:我提交的明明是正确的信息,为什么会提示错误呢?

实际上,全角和半角有一一对应关系,而大多数用户并非故意输入错误的信息,所以,我们可以通过程序来避免这种情况的发生,最多,可以在转换后给用户一个确认的机会,这样,或许能够给用户一个更好的体验。

下面介绍一个函数,实现字符 半角 和 全角 之间的互转。

<?php
header("Content-type: text/html; charset=utf-8");
// 第一个参数:传入要转换的字符串
// 第二个参数:取0,半角转全角;取1,全角到半角
function SBC_DBC($str, $args2) {
    $DBC = Array(
        '0' , '1' , '2' , '3' , '4' ,
        '5' , '6' , '7' , '8' , '9' ,
        'A' , 'B' , 'C' , 'D' , 'E' ,
        'F' , 'G' , 'H' , 'I' , 'J' ,
        'K' , 'L' , 'M' , 'N' , 'O' ,
        'P' , 'Q' , 'R' , 'S' , 'T' ,
        'U' , 'V' , 'W' , 'X' , 'Y' ,
        'Z' , 'a' , 'b' , 'c' , 'd' ,
        'e' , 'f' , 'g' , 'h' , 'i' ,
        'j' , 'k' , 'l' , 'm' , 'n' ,
        'o' , 'p' , 'q' , 'r' , 's' ,
        't' , 'u' , 'v' , 'w' , 'x' ,
        'y' , 'z' , '-' , ' ' , ':' ,
        '.' , ',' , '/' , '%' , '#' ,
        '!' , '@' , '&' , '(' , ')' ,
        '<' , '>' , '"' , ''' , '?' ,
        '[' , ']' , '{' , '}' , '\' ,
        '|' , '+' , '=' , '_' , '^' ,
        '¥' , ' ̄' , '`'
    );
    $SBC = Array( // 半角
        '0', '1', '2', '3', '4',
        '5', '6', '7', '8', '9',
        'A', 'B', 'C', 'D', 'E',
        'F', 'G', 'H', 'I', 'J',
        'K', 'L', 'M', 'N', 'O',
        'P', 'Q', 'R', 'S', 'T',
        'U', 'V', 'W', 'X', 'Y',
        'Z', 'a', 'b', 'c', 'd',
        'e', 'f', 'g', 'h', 'i',
        'j', 'k', 'l', 'm', 'n',
        'o', 'p', 'q', 'r', 's',
        't', 'u', 'v', 'w', 'x',
        'y', 'z', '-', ' ', ':',
        '.', ',', '/', '%', '#',
        '!', '@', '&', '(', ')',
        '<', '>', '"', '\'','?',
        '[', ']', '{', '}', '\\',
        '|', '+', '=', '_', '^',
        '$', '~', '`'
    );
    if ($args2 == 0) {
        return str_replace($SBC, $DBC, $str);  // 半角到全角
    } else if ($args2 == 1) {
        return str_replace($DBC, $SBC, $str);  // 全角到半角
    } else {
        return false;
    }
}
$str1 = "https://3water.com/ - 三水点靠木";
$str2 = "http://JB51.net/ - 三水点靠木";
echo "半角 转 全角:<br />";
echo $str1 . ' -> ' . SBC_DBC($str1, 0);
echo "<br /><br />全角 转 半角:<br />";
echo $str2 . ' -> ' . SBC_DBC($str2, 1);
?>
PHP 相关文章推荐
我的论坛源代码(二)
Oct 09 PHP
别人整理的服务器变量:$_SERVER
Oct 20 PHP
phpMyAdmin2.11.6安装配置方法
Aug 24 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
Jun 03 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
学习php设计模式 php实现桥梁模式(bridge)
Dec 07 PHP
php打包网站并在线压缩为zip
Feb 13 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
PHP删除字符串中非字母数字字符方法总结
Jan 20 PHP
PHP实现数组和对象的相互转换操作示例
Mar 20 PHP
php5.3 废弃函数小结
May 16 #PHP
memcached 和 mysql 主从环境下php开发代码详解
May 16 #PHP
php 中文和编码判断代码
May 16 #PHP
PHP URL地址获取函数代码(端口等) 推荐
May 15 #PHP
php select,radio和checkbox默认选择的实现方法
May 15 #PHP
php checkbox复选框值的获取与checkbox默认值输出方法
May 15 #PHP
php radio 单选框获取与保持值的实现代码
May 15 #PHP
You might like
php 正则匹配函数体
2009/08/25 PHP
php下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
浅谈$('div a') 与$('div&gt;a')的区别
2016/07/18 Javascript
jQuery双向列表选择器select版
2016/11/01 Javascript
JavaScript利用fetch实现异步请求的方法实例
2017/07/26 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
wxpython学习笔记(推荐查看)
2014/06/09 Python
python如何制作缩略图
2019/04/30 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
django创建最简单HTML页面跳转方法
2019/08/16 Python
pywinauto自动化操作记事本
2019/08/26 Python
使用python绘制温度变化雷达图
2019/10/18 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
python 实现两个npy档案合并
2020/07/01 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
NEW LOOK官网:英国时装零售巨头之一,快时尚品牌
2017/01/11 全球购物
考察现实表现材料
2014/05/19 职场文书
四风问题专项整治工作情况报告
2014/10/28 职场文书
大学生毕业评语
2014/12/31 职场文书
鸟的天堂导游词
2015/01/31 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
mysql中between的边界,范围说明
2021/06/08 MySQL
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL