php全角字符转换为半角函数

之前试过网上找的通过ASCII之类的字符替换,发现很多莫名其妙的问题。最后还是换成下面的字符替换方式了,把目前能找到的所有全角都列出来了一个个替换吧


代码如下:

/**
* 全角字符转换为半角
*
* @param string $str
* @return string
*/
public function Sbc2Dbc($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);
}

(0)

相关推荐

  • PHP 全角转半角实现代码

    复制代码 代码如下: /** * 将一个字串中含有全角的数字字符.字母.空格或'%+-()'字符转换为相应半角字符 * @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'

  • php代码把全角数字转为半角数字

    //把全角数字转为半角数字 function GetAlabNum($fnum){     $nums = array('0','1','2','3','4','5','6','7','8','9','.','-','+',':');     $fnums = array('0','1',  '2','3',  '4','5',  '6', '7','8',  '9','.',  '-', '+',':');     $fnlen = count($fnums);     for($i=0;$i

  • PHP实现全角字符转为半角方法汇总

    最简单的方法 <?php $str = "0123ABCDFWS\",.?<>{}[]*&^%#@!-()+-|::"; echo "$str"; echo "<br />"; $str = preg_replace('/\xa3([\xa1-\xfe])/e', 'chr(ord(\1)-0x80)', $str); echo $str; 这是网上看来的代码,所有的中文标点的第二个字节减去0X80(即128

  • php全角字符转换为半角函数

    之前试过网上找的通过ASCII之类的字符替换,发现很多莫名其妙的问题.最后还是换成下面的字符替换方式了,把目前能找到的所有全角都列出来了一个个替换吧 复制代码 代码如下: /** * 全角字符转换为半角 * * @param string $str * @return string */ public function Sbc2Dbc($str) { $arr = array( '0'=>'0', '1'=>'1', '2'=>'2', '3'=>'3', '4'=>'4',

  • MySQL存储全角字符和半角字符的区别

    很不巧公司内测IM的时候又遇到MYSQL_DATA_TRUNCATED错误,日志记录还是在mysql_stmt_fetch调用的时候出现的.鉴于之前的经验,应该是给定的结果集绑定区域长度不够造成的,反复检查了好多遍没发现问题.我在代码中都是对应的关系,比如char(20),我代码中就会定义char buffer[20]数组来存储.看起来如此的正确完美.后面没办法只好打印每一行的数据,找到报错的那一行记录,发现字体和别的不一样.比如: 123456789(半角) 123456789(全角) 这并不

  • 半角全角相互转换的js函数

    复制代码 代码如下: ///全角空格为12288,半角空格为32 ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 //半角转换为全角函数 function ToDBC(txtstring) { var tmp = ""; for(var i=0;i<txtstring.length;i++) { if(txtstring.charCodeAt(i)==32) { tmp= tmp+ String.fromCharCode(1228

  • Oracle全角数字转换半角数字

    数据库表 test 字段 id name age 全角数字:1234 半角数字:1234 length和lengthb的区别: length(1234) 4 lengthb(1234) 8 to_single_byte函数用法: to_single_byte(1234) 1234 查找所有全角的数字: select age from test where lengthB(age) >4 替换全角的为半角的: update test t1 set t1.age = (select to_singl

  • Flex正则表达式判断中文或全角字符代码

    Flex中一文本框,其值的length取出的是字符个数,并不是字节长度,如果含有中文或者全角字符,一个字符是2个字节. 计算其字符长度, ActionScript代码 复制代码 代码如下: for(var i:int=0;i<newStr.length;i++){ var char:String = newStr.substr(i,1); if(/[^\x00-\xff]/g.test(char)){ //中文加10 screenLength = screenLength + 10; }else

  • 正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度

    判断是否存在中文和全角字符 str.match(/[^\x00-\xff]/ig) 判断包含中文字符串长度 aMatch=str.match(/[^\x00-\x80]/g); str.length+(!aMatch?0:aMatch.length) javascript 判断中文字符长度 一种: 复制代码 代码如下: function _length(str){ var len=0; for(var i=0;i<str.length;i++){ if(str.charAt(i)>'~'){l

  • SqlServer数据库全角转换成半角

    复制代码 代码如下: CREATE   FUNCTION   f_Convert( @str   NVARCHAR(4000),   --要转换的字符串 @flag   bit                             --转换标志,0转换成半角,1转换成全角 )RETURNS   nvarchar(4000) AS BEGIN DECLARE   @pat   nvarchar(8),@step   int,@i   int,@spc   int IF   @flag=0 SEL

  • c#转换全角半角方法示例

    C#全角转换成半角 新建一个项目quanbanjiao,在此项目下新建一个类Class1 复制代码 代码如下: using System;using System.Web;using System.Text; namespace quanbanjiao{    public class Class1    {        /**/        /// <summary>        /// 判断字符是否英文半角字符或标点        /// </summary>      

随机推荐