PHP 全角转半角实现代码

<div class="codetitle"><a style="CURSOR: pointer" data="35947" class="copybut" id="copybut35947" onclick="doCopy('code35947')"> 代码如下:

<div class="codebody" id="code35947">
/*
一个字串中含有全角的数字字符、字母、空格或'%+-()'字符转换为相应半角字符
@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);
}
<div class="codetitle"><a style="CURSOR: pointer" data="27661" class="copybut" id="copybut27661" onclick="doCopy('code27661')"> 代码如下:
<div class="codebody" id="code27661">
<?PHP
$str = "0123ABCDFWS\",.?<>{}[]*&^%#@!~()+-|:;";
echo "$str";
echo "
";
$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 = "//www.jb51.cc/ - 编程之家";
$str2 = "http://JB51.net/ - 编程之家";

echo "半角 转 全角:
";
echo $str1 . ' -> ' . SBC_DBC($str1,0);

echo "

全角 转 半角
";
echo $str2 . ' -> ' . SBC_DBC($str2,1);
?>

PHP全角半角半角

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...