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中与数组相关的函数
Mar 22 PHP
PHP令牌 Token改进版
Jul 18 PHP
PHP 删除一个目录及目录下的所有文件的函数代码
May 26 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
php实现兼容2038年后Unix时间戳转换函数
Mar 18 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
Jan 05 PHP
CI(Codeigniter)的Setting增强配置类实例
Jan 06 PHP
php 常用的系统函数
Feb 07 PHP
php数组指针操作详解
Feb 14 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
Apr 02 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 判断数组是几维数组
2013/03/20 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
js 字符串转换成数字的三种方法
2013/03/23 Javascript
jQuery判断密码强度实现思路及代码
2013/04/24 Javascript
js 获取浏览器版本以此来调整CSS的样式
2014/06/03 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
javascript实现列表滚动的方法
2015/07/30 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
分享Bootstrap简单表格、表单、登录页面
2017/08/04 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
python自动安装pip
2014/04/24 Python
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
python实现SMTP邮件发送功能
2020/06/16 Python
python 垃圾收集机制的实例详解
2017/08/20 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
求高于平均分的学生学号及成绩
2016/09/01 面试题
大学新生军训个人的自我评价
2013/10/03 职场文书
超市开店计划书
2014/04/26 职场文书
英语求职信范文
2014/05/23 职场文书
天猫活动策划方案
2014/08/21 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
结婚主持人致辞
2015/07/28 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android