可以批量进行添加上传,简单方便
代码如下 | 复制代码 |
<script type="text/javascript"" width=100% src="jquery-1.5.1.min.js"></script>
<script type="text/javascript"" width=100% src="ajaxfileupload.js"></script>
<form id="upform" action="" method="post" enctype="multipart/form-data"> <input id='fname' size='80' /><br> <input type="file" name="file1" id="file1" size="30" /> <input type="button" value="上传" onclick="return ajaxFileUpload();" /> <span id="msg" style="display: none">UpLoading...</span> </form>
<script type="text/javascript"> var str = ''; function ajaxFileUpload(){ $("#msg") .ajaxStart(function(){ $(this).show(); }); /* .ajaxComplete(function(){ $(this).hide(); }); */ $.ajaxFileUpload( { url:'up_deal.php', secureuri:false, fileElementId:'file1', dataType: 'text', //data:{name:'qinmi', id:'123'}, success: function(data){ if(data=='error'){ $('#msg').html("<span style='color:red'>上传失败</span>"); }else{ www.111cn.net $('#msg').html("<span style='color:green'>上传成功</span>"); str += data+'@'; $('#fname').val(str); } } } ); return false; } </script> |
up_deal.php
代码如下 | 复制代码 |
<?php if ((($_FILES["file1"]["type"] == "image/gif") || ($_FILES["file1"]["type"] == "image/jpeg") || ($_FILES["file1"]["type"] == "image/bmp") || ($_FILES["file1"]["type"] == "image/pjpeg")) && ($_FILES["file1"]["size"] < 100000)){//100KB $extend = explode(".",$_FILES["file1"]["name"]); $key = count($extend)-1; $ext = ".".$extend[$key]; $newfile = time().$ext;
if(!file_exists('upload')){mkdir('upload');} move_uploaded_file($_FILES["file1"]["tmp_name"],"upload/" . $newfile); @unlink($_FILES['file1']); echo $newfile; }else { echo 'error'; } ?> |
其中需要用到ajaxfileupload.js 这个文件,
几乎所有的程序员来模仿用户登录或抓取数据都会使用到curl函数,下面我来给各位介绍利用curl函数实现登录并抓取数据,希望下面例子对各位有帮助。PHP的curl()在抓取网页的效率方面是比较高的,而且支持多线程,而file_get_contents()效率就要稍低些,当然,使用curl时需要开启下curl扩展。
代码实战
先来看登录部分的代码:
代码如下 | 复制代码 |
//模拟登录 |
函数login_post()首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址,保存的cookie文件,post的数据(用户名和密码等信息),是否返回信息等等,然后curl_exec执行curl,最后curl_close()释放资源。注意PHP自带的http_build_query()可以将数组转换成相连接的字符串。
接下来如果登录成功后,我们要获取登录成功后的页面信息。
代码如下 | 复制代码 |
//登录成功后获取数据 |
函数get_content()中也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中我们设置CURLOPT_RETURNTRANSFER为1即自动返回信息,而CURLOPT_COOKIEFILE可以读取到登录时保存的cookie信息,最后将页面内容返回。
我们的最终目的是要获取到模拟登录后的信息,也就是只有正常登录成功后才能获取的有用信息。接下来我们以登录开源中国的移动版为例,看看如何抓取到登录成功后的信息。
/
代码如下 | 复制代码 |
/设置post的数据 $post = array ( 'email' => 'oschina账户', 'pwd' => 'oschina密码', 'goto_page' => '/my', 'error_page' => '/login', 'save_login' => '1', 'submit' => '现在登录' ); //登录地址 $url = http://www.111cn.net; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录 login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件 @ unlink($cookie); //匹配页面信息 $preg = "/<td class='portrait'>(.*)</td>/i"; preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str; |
运行上述代码后,我们会看到最终获取到登录用户的头像图片。
使用总结
1、初始化curl;
2、使用curl_setopt设置目标url,和其他选项;
3、curl_exec,执行curl;
4、执行后,关闭curl;
5、输出数据。
今天在做公司的项目的时候,遇到一个问题,群聊天记录存入数据库的时候把聊天记录及央视使用16进制转换,我在做将聊天记录导出为text文本的时候,需要将聊天记录先从16进制转换为普通的Unicode编码记录然后在从中取出所需要导出的message信息,不多说了,代码如下,以下代码属于线下的,线上的就不透漏了,算是一篇非常的简单的php教程吧:
代码如下 | 复制代码 |
<?php |
折腾了好久主题
结果发现本地搭的有问题
索性不折腾了?(?^?)?
在百度贴吧里POST的时候
经常要通过JSON获取一些值
那么PHP如何实现输出JSON数据呢?
其实PHP里已经有'json_encode'函数了
代码如下 | 复制代码 |
<?php $array = array( 'Newest_Ver' => 'None', 'API_List' => 'http://www.111cn.net/', 'Announcement' => 'None' ); $result = json_encode($array); echo $result; ?> |
直接使用json_encode转换出来的中文会变成NULL的,urlencode后就不存在这个问题了。
json数据为乱码
生成json字符串的时候只能使用utf-8。不过可以用下面这个函数先实现utf8数组转码然后在直接使用json_encode():
代码如下 | 复制代码 |
function output($arr = array()) { return eval('return ' . iconv('GB2312', 'UTF-8', var_export($arr, true)) . ';');} |
函数
代码如下 | 复制代码 |
function hidtel($phone){ 示例: $phonenum = "13966778888"; |
例子
1、屏蔽手机号码中间段:
代码如下 | 复制代码 |
preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone); |
2、屏蔽固定电话中间段:
代码如下 | 复制代码 |
preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i','$1****$2',$phone); |
例如:
代码如下 | 复制代码 |
$phone = '010-88888888-8'; $phone = preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i','$1****$2',$phone); echo $phone,'<br>www.111Cn.net'; 结果输出: 138****8888 |