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 相关文章推荐
echo(),print(),print_r()之间的区别?
Nov 19 PHP
解析PHP中$_FILES的使用以及注意事项
Jul 05 PHP
php 生成自动创建文件夹并上传文件的示例代码
Mar 07 PHP
PHP源码分析之变量的存储过程分解
Jul 03 PHP
如何使用Gitblog和Markdown建自己的博客
Jul 31 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 PHP
学习php设计模式 php实现合成模式(composite)
Dec 08 PHP
非常实用的php验证码类
May 15 PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 PHP
php如何利用pecl安装mongodb扩展详解
Jan 09 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
Feb 12 PHP
php设计模式之工厂模式用法经典实例分析
Sep 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应用JSON技巧讲解
2013/02/03 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
JavaScript 全角转半角部分
2009/10/28 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
JS交换变量的方法
2015/01/21 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
ES7之Async/await的使用详解
2019/03/28 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
2019/06/18 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
Python集合操作方法详解
2020/02/09 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
公司办公室岗位职责
2014/03/19 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android
德生BCL3000抢先使用感受和评价
2022/04/07 无线电