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函数
Feb 16 PHP
PHP 类商品秒杀计时实现代码
May 05 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
Jun 17 PHP
关于PHP实现异步操作的研究
Feb 03 PHP
php实现利用phpexcel导出数据
Aug 24 PHP
php socket客户端及服务器端应用实例
Jul 04 PHP
thinkphp浏览历史功能实现方法
Oct 29 PHP
php中Ctype函数用法详解
Dec 09 PHP
浅谈PHP的反射机制
Dec 15 PHP
Yii2下点击验证码的切换实例代码
Mar 14 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
May 05 PHP
tp5使用layui实现多个图片上传(带附件选择)的方法实例
Nov 17 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
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
python引用DLL文件的方法
2015/05/11 Python
python之django母板页面的使用
2018/07/03 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
Python assert语句的简单使用示例
2019/07/28 Python
python sorted方法和列表使用解析
2019/11/18 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
python读取excel进行遍历/xlrd模块操作
2020/07/12 Python
python 实现简易的记事本
2020/11/30 Python
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
Python中pass语句的作用是什么
2016/06/01 面试题
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
经销商培训邀请函
2014/01/21 职场文书
法制宣传口号
2014/06/16 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
2015年中秋放假通知范文
2015/08/18 职场文书
《童年的发现》教学反思
2016/02/18 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
vue中 this.$set的使用详解
2021/11/17 Vue.js
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js
Python PIL按比例裁剪图片
2022/05/11 Python