php数组编码转换函数的示例
场景说明/问题描述:
Ajax提交页面编码为gb2312,数据库编码为utf8,在不更改页面及数据库编码的情况下插入数据。
自定义函数:
代码如下 | 复制代码 |
function array_iconv($in_charset,$out_charset,$arr){ return eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).';')); } |
函数说明:
var_export设置第二个参数为true,返回数组原型字符串,将字符串转换为utf-8编码,之后再用eval来执行返回。
范例:
代码如下 | 复制代码 |
$postdata = $_POST; $data = array_iconv('gb2312','utf-8',$postdata) print_r($data); |
借助Firefox firebug组件我们可以看到:
再看下数据库:
可以看到编码已经正常且入库成功
下面我们一起来看我整理了在php开发中一些常用的php函数整理,希望这些函数代码地各位同学同样有帮助哦。1.关键词高亮
代码如下 | 复制代码 |
function highlight($sString, $aWords) { $sWords = implode ('|', $aWords); |
2.获取你的Feedburner的用户
代码如下 | 复制代码 |
function get_average_readers($feed_id,$interval = 7){ $nb = 0; return round($nb/$interval); |
3.自动生成密码
代码如下 | 复制代码 |
function generatePassword($length=9, $strength=0) { $password = ''; |
4.压缩多个CSS文件
代码如下 | 复制代码 |
header('Content-type: text/css'); /* your css files */ ob_end_flush(); |
5.获取短网址
代码如下 | 复制代码 |
function getTinyUrl($url) { return file_get_contents("http://tinyurl.com/api-create.php?url=".$url); } |
6.根据生日计算年龄
代码如下 | 复制代码 |
function age($date){ $date = date('Y-m-d', $time); return $year_diff; |
7.计算执行时间
代码如下 | 复制代码 |
//Create a variable for start time // Place your PHP/HTML/JavaScript/CSS/Etc. Here //Create a variable for end time echo 'Script took '.$time.' seconds to execute';8.PHP的维护模式 if(basename($_SERVER['SCRIPT_FILENAME']) != 'maintenance.php'){ |
9.阻止CSS样式被缓存
代码如下 | 复制代码 |
<link href="/stylesheet.css?<?php echo time(); ?>" rel="stylesheet" type="text/css" /&glt;10.数字增加 stndrd 等 if( $last == 1 && $seclast == 1) $ext = 'th'; return $rank.$ext; |
通过IP判断来源
这是一个非常实用的代码片段,可以帮助你通过IP来判断访客来源。下面的方法通过接收一个参数,然后返回IP所在地点。如果没有找到,则返回UNKNOWN。
代码如下 | 复制代码 |
function detect_city($ip) { $default = 'UNKNOWN'; if (!is_string($ip) || strlen($ip) < 1 || $ip == '127.0.0.1' || $ip == 'localhost') $ip = '8.8.8.8'; $curlopt_useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)'; $url = 'http://ipinfodb.com/ip_locator.php?ip=' . urlencode($ip); $ch = curl_init(); $curl_opt = array( CURLOPT_FOLLOWLOCATION => 1, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $curlopt_useragent, CURLOPT_URL => $url, CURLOPT_TIMEOUT => 1, CURLOPT_REFERER => 'http://' . $_SERVER['HTTP_HOST'], ); curl_setopt_array($ch, $curl_opt); $content = curl_exec($ch); if (!is_null($curl_info)) { $curl_info = curl_getinfo($ch); } curl_close($ch); if ( preg_match('{<li>City : ([^<]*)</li>}i', $content, $regs) ) { $city = $regs[1]; } if ( preg_match('{<li>State/Province : ([^<]*)</li>}i', $content, $regs) ) { $state = $regs[1]; } if( $city!='' && $state!='' ){ $location = $city . ', ' . $state; return $location; }else{ return $default; } } |
判断一张图片的主色调
下面这个代码非常实用,能帮助你判断一张图片中的主色调,你可以分析任何图片。
代码如下 | 复制代码 |
$i = imagecreatefromjpeg("image.jpg"); for ($x=0;$x<imagesx($i);$x++) { for ($y=0;$y<imagesy($i);$y++) { $rgb = imagecolorat($i,$x,$y); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> & 0xFF; $b = $rgb & 0xFF; $rTotal += $r; $gTotal += $g; $bTotal += $b; $total++; } } $rAverage = round($rTotal/$total); $gAverage = round($gTotal/$total); $bAverage = round($bTotal/$total); |
不显示PHP错误而发送电子邮件取代之
如果你不想在页面中显示PHP错误,也可以通过email来获取错误信息。下面的代码可以帮助你实现。
代码如下 | 复制代码 |
<?php // Our custom error handler function nettuts_error_handler($number, $message, $file, $line, $vars){ $email = " <p>An error ($number) occurred on line <strong>$line</strong> and in the <strong>file: $file.</strong> <p> $message </p>"; $email .= "<pre>" . print_r($vars, 1) . "</pre>"; $headers = 'Content-type: text/html; charset=iso-8859-1' . "rn"; // Email the error to someone... error_log($email, 1, 'you@youremail.com', $headers); // Make sure that you decide how to respond to errors (on the user's side) // Either echo an error message, or kill the entire project. Up to you... // The code below ensures that we only "die" if the error was more than // just a NOTICE. if ( ($number !== E_NOTICE) && ($number < 2048) ) { die("There was an error. Please try again later."); } } // We should use our custom function to handle errors. set_error_handler('nettuts_error_handler'); // Trigger an error... (var doesn't exist) echo $somevarthatdoesnotexist; |
数组的相关处理函数:
1)数组的键值操作函数
array_values();//获取数组中的值
array_keys();//获取数组中的键
in_array();//检查一个值是否在数组中
array_key_exists();//检查一个键是否在数组中
array_flip();//键和值对调
array_reverse();//数组中的值反转
2)统计数组的元素和唯一性
count();//统计数组的个数
array_count_values();//统计数组中值出现的次数
array_unique();//删除数组中重复值
3)使用回调函数处理数组的函数
array_filter();//数组值过滤
array_map();//将回调函数作用到给定数组的单元上
4)数组的排序函数
sort();
//按值把数组值进行排序,升序,不保留key
rsort();
//按值把数组值进行排序,降序,不保留key
asort();
//按值把数组值进行排序,升序,保留key
arsort();
//按值把数组值进行排序,降序,保留key
ksort();
//按键把数组值进行排序,升序,保留key
krsort();
//按键把数组值进行排序,降序,保留key
natsort();
//按自然数排序
natcasesort();
//忽略大小写的自然数排序
array_multisort();//用一个数组对另外一个数组进行排序
SORT_DESC倒序
SORT_ASC正序 array_multisort($arr2,SORT_DESC,$arr);
5)拆分、合并、分解与结合函数
array_slice();//截取一段值 $arr2=array_slice($arr,0,3); 0开始位置,3个 ,返回值:截取的内容
array_splice();//截取一段值,保留一段值
返回值:截取后剩下的内容 //array_splice(3,3,"aa"); 从下标3的位置开始向后截取3个值,aa替换截取的内容
array_combine();//合并,一个是key,一个是value eg: $arr3=array_combine($arr1,$arr2); $arr1为key值 ,$arr2为值
array_merge(); 并集 //合并,键值相同,后面覆盖前面 返回一个新数组 $arr3=array_merge($arr1,$arr2);
array_intersect();//交集
array_diff();//差集
implode();//把数组连接成字符串 eg: $str=implode("|" ,$arr); | 分割符
explode();//把字符串分解成数组 eg: $arr=explode('|',$str);
6)数组与数据结构
array_pop();//从最后弹出一个值,返回弹出值 //unset($arr[count($arr)-1]);
array_push(); array_push($arr,6);//从最后添加一个值,返回数组个数
//$arr[]="aa";
array_shift();//从前面弹出一个值,返回移出值,原数组下标重排
//unset($arr[0]); 原数组下标不重排
array_unshift();//从前面插入一个值,返回数组个数
7)其他有用的数组处理函数
array_rand();//随机取一个key
shuffle();//打乱数组
array_sum();//数组所有值的和
range();//获取一个范围内数组
//range(1,10); 返回数组 array(1,2,3,...,10);
//range(1,10,2); array(1,3,5,7,9); 2代表差值;默认是0不写
字符串处理与正则表达式
————————————————
1.字符串的处理介绍
2.常用的字符串输出函数
3.常用的字符串格式化函数
4.字符串比较函数
5.正则表达式在字符串中的应用
6.与perl兼容的正则表达式函数
字符串的输出:
1)echo "hello world www.111cn.net";
2)print "aaaa";
3)die("输出一条错误消息");
4)printf("--%s----%s--",$a,$b);
%s 字符串
%d 数字
%f 浮点型 //%.2f 小数点后面两位
5)sprintf("$s%s",$a,$b);
不直接输出,而是返回值给一个新的变量
常用的字符串格式化函数:
1.去除空格和字符串填补函数
ltrim() //去左边空格
rtrim() //去右边空格;
trim() //去掉两头空格 $str='abc'; trim($str,'b'); echo $str ; 结果 :ac; 可以删除指定的字符串
str_pad() //向字符串里添加空格或字符串
<?php
$input = "Alien";
echo str_pad($input, 10); // 输出 "Alien "
echo str_pad($input, 10, "-=", STR_PAD_LEFT); // 输出 "-=-=-Alien"
echo str_pad($input, 10, "_", STR_PAD_BOTH); // 输出 "__Alien___"
echo str_pad($input, 6 , "___"); // 输出 "Alien_"
?>
2.字符串大小写转换函数
strtolower()
strtoupper()
ucfirst()
ucwords()
3.与html标签相关联的字符串函数
nl2br()
htmlspecialchars()
strip_tags()
addslashes()
stripslashes()
4.其他字符串格式化函数
strrev()
strlen()//返回字符串的长度
number_format()
md5() //单向不可逆加密
str_shuffle() //随机输出字符串
字符串比较函数:
1.按字节进行字符串的比较
1
strcmp($str1,$str2) //比较字符串的每个字节
strcasecmp()//忽略大小写比较字符串的每个字节
2.按自然排序法时字符串的比较
strnatcmp();
//按自然排序比较字符串中的数字
字符串的分割与拼接:
1.分割
//把字符串分割成数组
explode()
preg_split('//',$str);
2.拼接
//把数组拼接成字符串
implode()
join() //等于implode();
字符串的截取:
substr()
字符串的查找:
strstr()//查找指定字符在字符串中的第一次出现
strrchr()//查找指定字符在字符串中的最后一次出现
strpos()//w在$str中第一次出现的位置
strrpos($str,'w')//w在$str中最后一次出现的位置
字符串的替换:
1
str_replace()
支持多字节文字
mb_substr($str,0,7,"utf-8");
mb_strpos();
mb_strrpos();
mb_strstr();
mb_strtoupper();
mb_strtolower();
正则表达式在字符串中的应用:
一.正则表达式介绍
正则表达式是用于描述字符排列和匹配模式的一种语法规则,它主要用于字符串的模式分割,匹配,查找及替换操作,在php在正则表
达式一般是由正规字符和一些特殊字符联合构成的一个文本模式的程序性描述,这在儿我们使用perl兼容正则表达式
二.正则表达式语法
1.原子 www.111cn.net
1)单个字符,数字
a-z,A-Z,0-9 a-z其中任意一个字符
2)模式单元
(abc) 匹配abc并且成一个单元
3)原子表
[abc]它中的任意一个字符a或b或c
4)重新使用的模式单元
\1,$1
5)普通转义字符
d,D,w,W,s,S
d 匹配一个数字
D 匹配一个非数字
w 匹配字母,数字,下划线
W 除了字母,数字,下划线
s 匹配空白字符,空格,tab
S 除了空白字符,空格,tab
6)转义元字符
*,. []
2.元字符
*,+,?,|,^,$,b,B,[],[^],{m},{m,n},{m,},(),.
d* 一个或多个或0个数字
d+ 一个或多个数字
d? 一个或0个数字
. 任意一个字符
3.模式修正符
i,m,s,U,e
i 忽略大小写
m 视为多行
s 视为一行
U 贪婪模式,最大模式
e 替换的时候用的,可以用函数加工向后引用\1,$1
三.字符串正则表达式函数
1.字符串的匹配与查找
preg_match()
preg_match_all()
preg_grep()
2.字符串的替换
preg_replace()
//问题:正则e修饰符<>
3.字符串的分割与连接
preg_split()
4.正则表达式的web验证应用
1)电子邮件地址
2)url地址
3)电话号码
ubb编辑器:
[url][/url][b]文字[/b]
PHP获取目录和的方法通过魔术变量;通过超级全局变量;通过相关函数等等:
代码如下 | 复制代码 |
|
(注意: $HTTP_SERVER_VARS 和 $_SERVER 是不同的变量,PHP 处理它们的方式不同。)如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_SERVER 和 $HTTP_SERVER_VARS 数组。
$_SERVER['HTTP_HOST'] 取得当前请求的Host:头部内容
$_SERVER['PHP_SELF']这可能是我们最为经常用到的了,它返回当前调用 的页的文件名,如果是http://localhost/test/2005/test.php, 那么将会返回/test/2005/test.php
$_SERVER['SCRIPT_NAME']它将返回包含当前脚本的路径。这在页面需要指向自己时非常有用
$_SERVER['SCRIPT_FILENAME']它将返回当前文件所在的绝对路径信息
$_SERVER['REQUEST_URI']返回访问此页面所需的URI,包括"/"
当然还有许多路径函数:
dirname(),返回路径信息中的目录部分,前面是带有"/"的
basename()返回路径中的基本的文件名部分,当然也可以设置后缀来控制输出。
realpath(),返回路径信息的绝对规范化的路径
代码如下 | 复制代码 |
<?php /* * @ anthor:QD * @ time: 2013-09-27 */ class json{ private $Arr = array(); //传入数组 //构造器 public function json($array) { if(!is_array($array)) return false; $this->Arr = $array; } //解析主函数 public function MainArr() { $arr = $this->Arr; if($this->TypeArr($arr)) { $json = $this->NumArr($arr); } else { $json = $this->IndexArr($arr); } return $json; } //解析索引数组 public function IndexArr($arr) { $str =""; foreach($arr as $k=>$value) { if(is_array($value)) { if($this->TypeArr($value)) { $sun=$this->NumArr($value);} else {$sun=$this->IndexArr($value);} if(strpos($sun,"}") || strpos($sun,"]")) { $str .= """.$k."":".$sun.","; } else { $str .= """.$k."":"".$sun."","; } } else { $str .= """.$k."":"".$value."","; } } $str = "{".trim($str,",")."}"; return $str; } //解析数字数组 public function NumArr($arr) { $str = ""; foreach($arr as $value) { if(is_array($value)) { if($this->TypeArr($value)) { $sun=$this->NumArr($value);} else {$sun=$this->IndexArr($value);} if(strpos($sun,"}") || strpos($sun,"]")) { $str .= $sun.","; } else { $str .= """.$sun."","; } } else { $str .= """.$value."","; } } $str = "[".trim($str,",")."]"; return $str; } //检验一个数组是不是严格数字索引 public function TypeArr($arr) { if(array_values($arr) === $arr) return true; return false; } } ?> |
相关文章
- eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
- 下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
- 这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <?php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
- Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
- CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
- 这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
Android开发中findViewById()函数用法与简化
findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20- 这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
- strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07- Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
- 下面小编就为大家带来一篇C# 拷贝数组的几种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07