PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)


Posted in PHP onAugust 31, 2012

看点:
1、file_get_contents超时控制。
2、页面编码判断。
3、键盘Enter键捕捉响应。
4、键盘event兼容处理。//event = event || window.event;
5、XMLHttpRequest 和 jQuery 两种实现方案。
6、页面及源码同时展示。
XMLHttpRequest版本 get_web.php

<?php 
header("Content-type: text/html; charset=utf-8"); 
if(!empty($_POST['input_text'])) { 
ini_set('default_socket_timeout', 10); 
if(!$data = file_get_contents($_POST['input_text'])) { 
echo "Time out!"; 
return ; 
} 
$charset_pos = stripos($data,'charset'); 
if($charset_pos) { 
if(stripos($data,'utf-8',$charset_pos)) { 
echo iconv('utf-8','utf-8',$data); 
}else if(stripos($data,'gb2312',$charset_pos)) { 
echo iconv('gb2312','utf-8',$data); 
}else if(stripos($data,'gbk',$charset_pos)) { 
echo iconv('gbk','utf-8',$data); 
} 
return; 
} 
echo $data; 
}else { 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Get Web Page</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Language" content="zh-CN" /> 
<script type="text/javascript"> 
function createXMLHTTP() 
{ 
try 
{ 
var request = new XMLHttpRequest(); 
} 
catch(e1) 
{ 
var arrVersions = ["Microsoft.XMLHTTP","MSXML2.XMLHttp.4.0", 
"MSXML2.XMLHttp.3.0","MSXML2.XMLHttp.5.0"]; 
for(var i=0;i < arrVersions.length;i++){ 
try{ 
request = new ActiveXObject(arrVersions[i]); 
}catch(e2){ 
request = false; 
} 
} 
} 
return request; 
} 
function ajax_post(url, params, target_id) 
{ 
request = new createXMLHTTP(); 
request.onreadystatechange = function() { 
if (this.readyState == 4) 
if (this.status == 200) 
if (this.responseText != null) 
document.getElementById(target_id).innerHTML = this.responseText; 
} 
request.open("POST", url, true); 
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
request.setRequestHeader("Content-length", params.length); 
request.setRequestHeader("Connection", "close"); 
request.send(params); 
} 
var checked = false; 
function check_(value) { 
checked = value; 
} 
function get_key(event) { 
event = event || window.event; 
if(event.keyCode==13 && checked != false) 
{ 
var url = document.getElementById('input_text').value; 
if(url != '') { 
get_page(); 
}else { 
document.getElementById('input_text').onfocus(); 
return false; 
} 
} 
} 
function get_page() { 
var url = document.getElementById('input_text').value; 
if(!url) { 
return false; 
}else { 
if(document.getElementById('output_page').innerHTML != '') { 
document.getElementById('output_page').innerHTML = ''; 
} 
} 
if(url.indexOf('http://') == -1) { 
url = 'http://'+url; 
} 
ajax_post( 
'<?php echo $_SERVER['PHP_SELF']; ?>', 
'input_text='+url, 
'output_page' 
); 
document.getElementById('click_show').style.display = 'block'; 
document.getElementById('back_a').href = document.location.href; 
document.getElementById('origin_website').href = url; 
} 
</script> 
<style> 
.div_box{ 
margin-top:10px; 
} 
.input_box{ 
border:1px solid; 
margin-left:10px; 
margin-top:2px; 
height:15px; 
float:left; 
size:32 
font-size: 14px; 
} 
.button_box{ 
float:left; 
height:23px; 
padding-bottom:3px; 
} 
.hide_box{ 
display:none; 
} 
.a_box{ 
margin-left:10px; 
margin-top:3px; 
height:15px; 
float:left; 
font-size: 14px; 
} 
.clear_box{ 
height:50px; 
} 
</style> 
</head> 
<body onkeydown="get_key(event)"> 
<div class="div_box"> 
<input id="input_text" class="input_box" type="text" value="" onclick="check_(true)" onblur="check_(false)"></input> 
<input type="button" class="button_box" onclick="get_page()" value="Get it!" ></input> 
<div id="click_show" class="hide_box"> 
<a id="origin_website" class="a_box" href="#" target="_black">访问原站</a> 
<a id="back_a" class="a_box" href="#">后退</a> 
</div> 
</div> 
<div class="clear_box"></div> 
<div id="output_page"></div> 
</body> 
</html> 
<?php 
} 
//End_php

jQuery 版本 get_web.php
<?php 
header("Content-type: text/html; charset=utf-8"); 
if(!empty($_POST['input_text'])) { 
ini_set('default_socket_timeout', 10); 
if(!$data = file_get_contents($_POST['input_text'])) { 
echo "Time out!"; 
return ; 
} 
$charset_pos = stripos($data,'charset'); 
if($charset_pos) { 
if(stripos($data,'utf-8',$charset_pos)) { 
echo iconv('utf-8','utf-8',$data); 
}else if(stripos($data,'gb2312',$charset_pos)) { 
echo iconv('gb2312','utf-8',$data); 
}else if(stripos($data,'gbk',$charset_pos)) { 
echo iconv('gbk','utf-8',$data); 
} 
return; 
} 
echo $data; 
}else { 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Get Web Page</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Language" content="zh-CN" /> 
<script type="text/javascript" src="http://files.cnblogs.com/Zjmainstay/jquery-1.6.2.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$(document).keyup(function(e){ 
e = e || window.event; 
if(e.keyCode == 13 && $("#input_text").val() != '') { 
$(".button_box").click(); 
} 
}); 
$(".button_box").click(function(){ 
if($("#input_text").val() == '') { 
$("#input_text").addClass('errorTips').focus(); 
return false; 
}else { 
$("#input_text").removeClass('errorTips'); 
} 
$.ajax({ 
url: '<?php echo $_SERVER['PHP_SELF'] ?>', 
data: 'input_text='+$("#input_text").val(), 
type:'POST', 
success:function(msg){ 
$(".html_tips").show(); 
$("#origin_website").attr('href',$("#input_text").val()); 
$("#back_a").attr('href',document.location.href); 
$("#click_show").show(); 
$("#output_page_html").empty().val(msg).css({height:parseInt($(document).height()-100)}).show(); 
$("#output_page").empty().html(msg).show(); 
} 
}); 
}); 
}); 
</script> 
<style> 
.div_box{ 
margin-top:10px; 
} 
.input_box{ 
border:1px solid; 
margin-left:10px; 
margin-top:2px; 
height:15px; 
float:left; 
size:32 
font-size: 14px; 
} 
.button_box{ 
float:left; 
height:23px; 
padding-bottom:3px; 
} 
.hide_box{ 
display:none; 
} 
.a_box{ 
margin-left:10px; 
margin-top:3px; 
height:15px; 
float:left; 
font-size: 14px; 
} 
.clear_box{ 
height:50px; 
} 
.error_tips{ 
border:1px solid red; 
} 
#output_page_html{ 
width:960px; 
margin:0 auto; 
} 
.html_tips{ 
float: left; 
margin: 0 21px; 
font-size:1.8em; 
} 
</style> 
</head> 
<body> 
<div class="div_box"> 
<input id="input_text" class="input_box" type="text" value=""></input> 
<input type="button" class="button_box" value="Get it!" ></input> 
<div id="click_show" class="hide_box"> 
<a id="origin_website" class="a_box" href="#" target="_black">访问原站</a> 
<a id="back_a" class="a_box" href="#">后退</a> 
</div> 
</div> 
<div class="clear_box"></div> 
<div class="html_tips hide_box">站点</div> 
<div id="output_page"></div> 
<div class="html_tips hide_box">站点源码</div> 
<textarea id="output_page_html" class="hide_box"></textarea> 
</body> 
</html> 
<?php 
} 
//End_php

作者:Zjmainstay
PHP 相关文章推荐
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
PHP5+UTF8多文件上传类
Oct 17 PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
基于php冒泡排序算法的深入理解
Jun 09 PHP
解析php session_set_save_handler 函数的用法(mysql)
Jun 29 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
Nov 26 PHP
php简单统计字符串单词数量的方法
Jun 19 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
Nov 17 PHP
PHP数据库操作二:memcache用法分析
Aug 16 PHP
PHP+iframe模拟Ajax上传文件功能示例
Jul 02 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 PHP
php与阿里云短信接口接入操作案例分析
May 27 PHP
PHP的简易冒泡法代码分享
Aug 28 #PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 #PHP
PHP实现手机归属地查询API接口实现代码
Aug 27 #PHP
PHP 图片水印类代码
Aug 27 #PHP
PHP setTime 设置当前时间的代码
Aug 27 #PHP
PHP 透明水印生成代码
Aug 27 #PHP
无JS,完全php面向过程数据分页实现代码
Aug 27 #PHP
You might like
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
PHP 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
cakephp常见知识点汇总
2017/02/24 PHP
学习ExtJS 访问容器对象
2009/10/07 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
2013/09/10 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
2016/12/27 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
Python正则表达式介绍
2012/08/06 Python
python练习程序批量修改文件名
2014/01/16 Python
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
Python使用matplotlib绘制动画的方法
2015/05/20 Python
浅析Python中的for 循环
2016/06/09 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
戴森英国官网:Dyson英国
2019/05/07 全球购物
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
介绍一下gcc特性
2012/01/20 面试题
应届生的求职推荐信范文
2013/11/30 职场文书
教师实习自我鉴定
2013/12/11 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
个人借款担保书
2014/04/02 职场文书
党员民主评议总结
2014/10/20 职场文书
综合办公室岗位职责
2015/04/11 职场文书
安全教育培训心得体会
2016/01/15 职场文书
解决golang post文件时Content-Type出现的问题
2021/05/02 Golang
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android