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 相关文章推荐
PHP base64+gzinflate压缩编码和解码代码
Oct 03 PHP
php 常用类整理
Dec 23 PHP
php数组函数序列之array_search()- 按元素值返回键名
Nov 04 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
从PHP的源码中深入了解stdClass类
Apr 18 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
thinkPHP模板中函数的使用方法示例
Nov 30 PHP
swoole和websocket简单聊天室开发
Nov 18 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
Oct 16 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 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中正确的使用json
2013/08/06 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
理解javascript中的闭包
2017/01/11 Javascript
axios学习教程全攻略
2017/03/26 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
Python 条件判断的缩写方法
2008/09/06 Python
python中map、any、all函数用法分析
2015/04/21 Python
在Python的Django框架中创建语言文件
2015/07/27 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
Django视图和URL配置详解
2018/01/31 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
python实现opencv+scoket网络实时图传
2020/03/20 Python
美的官方商城:Midea
2016/09/14 全球购物
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
高二物理教学反思
2014/02/08 职场文书
分公司经理任命书
2014/06/05 职场文书
党员组织生活会发言材料
2014/10/17 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
贷款收入证明格式
2015/06/24 职场文书
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python