【温馨提示】源码包解压密码:www.youhutong.com
把字符串中含有的全角字符.全部转换为半角字符.
如果可以的话最接收表单数据时.我们可以封装一个接收表单数据公用函数.然后直接在里面调用我们的全角转半角方法函数就行了.
下面代码奉上!
有问题可以留言交流.一起学习.
一:把字符串中含有全角的全部转换成对应半角字符方法代码:/**
* 全角字符转换为半角字符
* author: xiaochuan
* @access public
* @param string $str 待转换字串
* @return string $str 处理后字串
*/
function str_angle($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',
'(' => '(',
')' => ')',
'[' => '[',
']' => ']',
'[' => '[',
']' => ']',
'[' => '[',
']' => ']',
'[' => '[',
'"' => ']',
'`' => '[',
"'" => ']',
'{' => '{',
'}' => '}',
'' => '>',
'%' => '%',
'+' => '+',
'-' => '-',
'-' => '-',
'-' => '-',
':' => ':',
'.' => '.',
'.' => ',',
'.' => '.',
'.' => '.',
',' => ',',
'?' => '?',
'!' => '!',
'-' => '-',
'|' => '|',
'"' => '"',
"'" => '`',
'`' => '`',
'|' => '|',
'"' => '"',
' ' => ' '
);
if(is_array($str)){
$str = implode('{YHT}', $str);
$newstr = strtr($str, $arr);
return explode('{YHT}', $newstr);
}else{
return strtr($str, $arr);
}
}
二:为了方便.接收POST.GET数据.我直接封装了一个公共函数.以后需要接收数据时就可 直接调用这个函数了.好处是.有什么验证规则等等.后期都可直接在这个函数中处理了.
下面是我封装的一处理表单数据的一个公共函数(TP5的)./**
* 正确获取参数(适用用THINKPHP5.0框架)
* author: xiaochuan
* @param: string $var 参数
* @param: boolean $check 是否开启常规安全检测
* return: mixed
*/
function param($name, $check=false)
{
if(strpos($name, '/')) {
list($var, $key) = explode('/', $name);
}else{
$var = $name;
}
if(input('?post.'.$var)){
$value = input('post.'.$name);
}else if(input('?get.'.$var)){
$value = input('get.'.$name);
}else if(input('?param.'.$var)){
$value = input('param.'.$name);
}else{
$value = '';
}
if($check && !check_param($value)) exception('非法参数');
return str_angle($value);
}
/**
* 正确获取参数 (适用用CI框架)
* author: xiaochuan
* @param: string $var 参数
* @param: boolean $check 是否检测
* return: mixed
*/
function param($var, $check=false)
{
if(get_instance()->input->post($var)){
$value = get_instance()->input->post($var);
}else if(get_instance()->input->get($var)){
$value = get_instance()->input->get($var);
}else{
$value = '';
}
if($check && !check_param($value)) exception('非法参数');
return str_angle($value);
}
这样的话.我们需要全角转半角时.就不需要满页面调用str_angle();
函数了.直在刚接收POST.GET数据的函数里调用一次就行了.
说明:
input('post.'.$var);和 get_instance()->input->post($var);
其实跟我们原生$_POST['name']是一样的.
其他的可以自己去封一下.
TP5中使用上面的param时,如果接收数据什么的跟tp5里的input一样也是可以加修饰附的。
如接收数组时,可加:/a 修饰附。
另外附上check_param参数检测函数方法:/**
* 参数安全判断
* @param: mixed $value 参数值
* @param: array $rules 检测规则
* return: boolean
*/
function check_param($value, $rules=''){
$rules = empty($rules) ? [1,2] : $rules;
// 检测规则
static $chars = [
1 => "select|delete|update|insert|union|into|load_file|outfile",
2 => "\'|\*|\\|\\$|\.\/",
3 => "\'|\/|\*|\\|\\$|\.\/",
4 => "\.",
];
$needChars = [];
foreach($rules as $one){
if(isset($chars[$one])) $needChars[] = $chars[$one];
}
if(!empty($needChars)){
if(is_array($value)){
foreach($value as $val){
$res = check_param($val,$rules);
if(!$res){
return false;
}
}
}else{
if(preg_match("/".implode("|",$needChars)."/i",$value)){
return false;
}
}
}
return true;
}
浏览器启用弹出窗口过滤功能,将无法跳转到下载页。在浏览器地址栏右边符号提示处点击允许就可以了!
【温馨提示】源码包解压密码:www.youhutong.com
郑重声明:
1、本站源码仅供个人学习研究和交流使用,请于下载后二十四小时内删除
2、本站大多资源来源于互联网、用户分享,仅供学习交流使用,本站不提供任何技术支持
3、本站联系方式Email:admin@youhutong.com ,收到邮件会第一时间处理。
4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意