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 相关文章推荐
PHP4 与 MySQL 交互使用
Oct 09 PHP
PHP 日,周,月点击排行统计
Jan 11 PHP
windows下zendframework项目环境搭建(通过命令行配置)
Dec 06 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
May 08 PHP
php获取远程文件内容的函数
Nov 02 PHP
微信获取用户地理位置信息的原理与步骤
Nov 12 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
Jun 17 PHP
Laravel用户授权系统的使用方法示例
Sep 16 PHP
PHP count_chars()函数讲解
Feb 14 PHP
PHP实现微信退款的方法示例
Mar 26 PHP
php实现的生成排列算法示例
Jul 25 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
Mar 23 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
php 各种应用乱码问题的解决方法
2010/05/09 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
php绘制一个矩形的方法
2015/01/24 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
php创建类并调用的实例方法
2019/09/25 PHP
用js做一个小游戏平台 (一)
2009/12/29 Javascript
JQuery 弹出框定位实现方法
2010/12/02 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
package.json各个属性说明详解
2020/03/11 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
python二叉树遍历的实现方法
2013/11/21 Python
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
Python程序暂停的正常处理方法
2019/11/07 Python
python中如何使用虚拟环境
2020/10/14 Python
在Python中字典按值排序的实现方法
2020/11/12 Python
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
自我鉴定书
2014/03/24 职场文书
党性观念心得体会
2014/09/03 职场文书
商务考察邀请函模板
2015/02/02 职场文书
Python闭包的定义和使用方法
2022/04/11 Python