在许多收集用户信息的表单里,期望用户输入的是半角字符,但是无论你如何强调,如何提醒,还是会有粗心的用户提交全角数据,其实,在一些新手眼中,全角和半角根本就没有区别,甚至他们会觉得:我提交的明明是正确的信息,为什么会提示错误呢?
实际上,全角和半角有一一对应关系,而大多数用户并非故意输入错误的信息,所以,我们可以通过程序来避免这种情况的发生,最多,可以在转换后给用户一个确认的机会,这样,或许能够给用户一个更好的体验。
下面介绍一个函数,实现字符 半角 和 全角 之间的互转。
复制代码 代码如下:
<?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.yx10011.com/ - 网页设计";
$str2 = "http://JB51.net/ - 网页设计";
echo "半角 转 全角:<br />";
echo $str1 . " -> " . SBC_DBC($str1, 0);
echo "<br /><br />全角 转 半角:<br />";
echo $str2 . " -> " . SBC_DBC($str2, 1);
?>