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中使用sockets:从新闻组中获取文章
Oct 09 PHP
初次接触php抽象工厂模式(Elgg)
Mar 21 PHP
Zend Studio (eclipse)使用速度优化方法
Mar 23 PHP
给WordPress中的留言加上楼层号的PHP代码实例
Dec 14 PHP
CodeIgniter辅助之第三方类库third_party用法分析
Jan 20 PHP
Zend Framework教程之视图组件Zend_View用法详解
Mar 05 PHP
php文件上传后端处理小技巧
May 22 PHP
PHP自定义函数获取汉字首字母的方法
Dec 01 PHP
thinkphp下MySQL数据库读写分离代码剖析
Apr 18 PHP
PHP实现微信提现(企业付款到零钱)
Aug 01 PHP
php获取微信openid方法总结
Oct 10 PHP
PHP如何防止用户重复提交表单
Dec 09 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读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
2016/10/29 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
2013/04/02 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
js 实现 input type=&quot;file&quot; 文件上传示例代码
2013/08/07 Javascript
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
vue-cli2.9.3 详细教程
2018/04/23 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
p5.js绘制旋转的正方形
2019/10/23 Javascript
Python中的Classes和Metaclasses详解
2015/04/02 Python
Python基于DES算法加密解密实例
2015/06/03 Python
说一说Python logging
2016/04/15 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
PythonPC客户端自动化实现原理(pywinauto)
2020/05/28 Python
个人求职简历的自我评价
2013/10/19 职场文书
物业管理专业个人的自我评价
2013/11/19 职场文书
高级编程求职信模板
2014/02/16 职场文书
公司建议书怎么写
2014/05/15 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android