您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2025/10/25 11:04:40发布21次查看
这篇文章主要给大家汇总介绍了php实现全角字符转为半角方法,从简单到复杂,小伙伴们根据自己的需求来自由选择吧。
最简单的方法
; $str = preg_replace('/\xa3([\xa1-\xfe])/e', 'chr(ord(\1)-0x80)', $str); echo $str;
这是网上看来的代码,所有的中文标点的第二个字节减去0x80(即128)所得的数字就是半角所得的数字了。而/e模式表达的是:如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 php 代码求值,并用其结果来替换所搜索的字符串。
在非utf-8模式下这个函数是可行的,但是utf-8下 这个方法就似乎无效,
方法二:
$queue = 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');echo preg_replace_callback(/([\xef][\xbc][\x90-\x99]|[\xef][\xbd][\x81-\x9a\xa1-\xba])/, 'next_fchar', '0');function next_fchar($matches){ global $queue; return $queue[$matches[1]];}
方法三:
/*** 字符串半角和全角间相互转换* @param string $str 待转换的字符串* @param int $type todbc:转换为半角;tosbc,转换为全角* @return string 返回转换后的字符串*/function convertstrtype($str, $type) {$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', '-', ' ', ':','.', ',', 'http://www.jb51.net/', '%', ' #','!', '@', '&', '(', ')','', '', '\'','?','[', ']', '{', '}', '\\','|', '+', '=', '_', '^','¥','~', '`');if($type == 'todbc'){return str_replace( $sbc, $dbc, $str ); //半角到全角}elseif($type == 'tosbc'){return str_replace( $dbc, $sbc, $str ); //全角到半角}else{return $str;}}
方法四:
/*** 将一个字串中含有全角的数字字符、字母、空格或'%+-()'字符转换为相应半角字符** @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);}
全角与半角之区别(来自中文维基百科)
全角,又称全形、全宽,,是电脑字符的一种格式,字面意思是比普通字符(或半角字符)宽的字符。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product