当前位置: 首页 > 编程日记 > 正文

PHP 利用AJAX获取网页并输出(原创自Zjmainstay)

看点:

1、file_get_contents超时控制。

2、页面编码判断。

3、键盘Enter键捕捉响应。

4、键盘event兼容处理。//event = event || window.event;

      5、XMLHttpRequest 和 jQuery 两种实现方案。

      6、页面及源码同时展示。

XMLHttpRequest版本 get_web.php
<?phpheader("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:32font-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 οnkeydοwn="get_key(event)"><div class="div_box"><input id="input_text" class="input_box" type="text" value="" οnclick="check_(true)" οnblur="check_(false)"></input><input type="button" class="button_box" οnclick="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
<?phpheader("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:32font-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

转载于:https://www.cnblogs.com/Zjmainstay/archive/2012/08/06/Ajax_getPage.html

相关文章:

TCP/IP 协议栈4层结构及3次握手4次挥手

TCP/IP 协议栈是一系列网络协议的总和&#xff0c;是构成网络通信的核心骨架&#xff0c;它定义了电子设备如何连入因特网&#xff0c;以及数据如何在它们之间进行传输。TCP/IP 协议采用4层结构&#xff0c;分别是应用层、传输层、网络层和链路层&#xff0c;每一层都呼叫它的下…

简述BT下载技术及其公司发展现状

一、 BT下载技术是什么&#xff1f;谁发明的&#xff1f; 2003年&#xff0c; 软件工程师Bram Cohen发明了BitTorrent协议&#xff08;俗称“BT下载”&#xff09;&#xff0c;其采用高效的软件分发系统和P2P技术共享大体积文件&#xff08;如一部电影或电视节目&#xf…

php要怎么使用imagettftext_延长防腐木使用要怎么做呢?

木结构基层的处理&#xff1a;设计施工中应充分保持防腐木材与地面之间的空气流通&#xff0c;可以更有效延长木结构基层的寿命。制作安装防腐木时&#xff0c;防腐木之间需留0.2-1CM的缝隙(根据木材的含水率再决定缝隙大小&#xff0c;木材含水率超过30&#xff05;时不应超过…

15个新鲜的单页网站设计实例

单页网站因为结合着css3 html5和jquery技术 使得这样的网站看这些网站看起来更具吸引力和新鲜的感&#xff0c;逐渐成为互联网上一个新趋势 &#xff0c;今天介绍网站设计一些新鲜的例子 。我希望大家将欣赏这美妙的设计师做的工作。随时分享您的看法&#xff0c; 1) Pigspotte…

异常处理机制(Begin try Begin Catch)

begin try--SQL end trybegin catch --sql (处理出错动作)end catch我们将可能会出错的sql 写在begin try...end try 之间&#xff0c;若出错&#xff0c;刚程序就跳到紧接着的begin try...end try 的beign catch...end catch中&#xff0c;执行beign catch...end catch错误处理…

开源工程系列之讯飞VBOX改装蓝牙5.0(aptX HD)音箱

最近得到一个小度智能音箱&#xff0c;功能还不错&#xff0c;但是音效一般。想起了吃灰的讯飞VBOX&#xff0c;音效相当棒&#xff0c;只是APP和服务器已经不再维护&#xff0c;只能放里面自带的歌曲&#xff0c;遂决定改装VBOX为蓝牙音箱&#xff0c;使用aptX HD&#xff08;…

台式电脑键盘按键错乱_Win7系统键盘数字错乱了应该如何解决?

Win7系统键盘数字错乱怎么办&#xff1f;相信很多用户都遇过键盘数字键错乱的情况&#xff0c;明明按的是数字键&#xff0c;但是却打不出相应的数字&#xff0c;整体键盘数字都错乱了&#xff0c;这是什么回事呢&#xff1f;接下来就为大家分享win7系统键盘数字错误恢复方法。…

程序编辑SHP文件并应用更改到数据源

在上一篇Blog中峻祁连介绍了在Map 3D中通过程序删除图层及数据源的方法&#xff0c;并且卖了个关子&#xff0c;这个方法还有另外一个妙用&#xff0c;今天就简单介绍一下。对数据源的编辑估计是Map 3D开发中最常见的功能了&#xff0c;包括对添加、删除和修改要素。这里以删除…

目录树结构改变后刷新目录树

主界面中含有一个目录树&#xff08;是将一个目录下所有的文件和子文件呈现成一个可以逐级展开的树&#xff09;&#xff0c;我将树的功能单独写成一个FileTree.class&#xff0c;这样能够让目录树处理更清晰些。第一次我的做法是&#xff1a;将建立TreeViewer和Tree写在FileTr…

Docker - 在CentOS7.5中升级Docker版本

1 - 检查当前版本 [rootlocalhost ~]# uname -a Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux [rootlocalhost ~]# [rootlocalhost ~]# cat /etc/system-release CentOS Linux release 7.5.1804 (C…

编码的细微区别

在编程学习的深入后&#xff0c;不可避免的会遇到ANSI、GB2312、UTF8的编码问题&#xff0c;如果不彻底了解他们的区别&#xff0c;都最终会造成一个问题--乱码&#xff01;想要更好的了解编码&#xff0c;我们首先应该了解编码的历史演变。 在继续学习之前先明白一下转化关系吧…

Axel之 -axel_do剖析

axel_do主体部分&#xff0c;尝试从多个连接select方式去读取数据&#xff0c;如果读取失败或者连接超时就重新连接。 下面是代码分析. //下载的主循环void axel_do( axel_t *axel ){ fd_set fds[1]; int hifd, i; long long int remaining,size; …

win10键盘全部没反应_Win10笔记本键盘失灵怎么办 Win10键盘失灵解决方法【详解】...

相信现在已经有很多朋友都已经成功升级了win10正式版&#xff0c;不过最近有用户反映&#xff0c;升级Win10笔记本键盘失灵怎么办?下面迅维小编整理了一些常见的原因与解决办法&#xff0c;供大家参考尝试解决。Win10笔记本键盘失灵的原因一1、没有开启小键盘很多笔记本都带有…

基于链接的排序算法

基于链接的排序算法似乎已广泛应用到各种商业seohua.net”> 搜索引擎中。为了让设计出来的网站能够在各种搜索引擎中获得较高排名&#xff0c;设计者们应该知道这些算法的原理。Google排名的成功意味着PageRank算 法值得特别的关注。PageRank算法是少数几个公开的排序算法之…

Spring Boot配置全局异常捕获

1 SpringBoot配置全局的异常捕获 项目的说明 配置thymeleaf作为视图模板ExceptionController.java模拟测试用MyAjaxExceptionHandler.java捕获到异常以ajax形式返回MyExceptionHandler.java捕获到异常以页面形式返回ajaxerror.html这个是测试返回ajax异常的页面error.html以页面…

一步一步Asp.Net MVC系列_权限管理总结(附MVC权限管理系统源码)

TZHSWEET&#xff1a;请大家多多反馈问题&#xff0c;我已经在修改中了&#xff0c;已更新版本。。。。。。 如果大家遇到数据库附加问题&#xff0c;EF连接字符串问题&#xff0c;请自行配置,如果有bug反馈可以私聊&#xff0c;我的qq&#xff1a;409180955。 项目已经发布到G…

电脑壁纸励志_励志壁纸 | 要乖 要长大 要努力 要不负众望

全世界只有不到1%的人关注了壁纸阿姨你真是个特别的人2020.4.17要乖 要长大 要努力 要不负众望励志壁纸全文字数&#xff1a;236阅读时间&#xff1a;1分钟图片数目&#xff1a;361“我不懂什么年少轻狂&#xff0c;我只知道胜者为王。”点击图片 长按保存高清原图♥2“愿你以渺…

ubuntu自定义命令

ubuntu中通过alias可以自定义快捷命令 在.bashrc中加入alias指令可以定义快捷命令&#xff0c;以下为我常用快捷命令 alias watwatch -n 1 nvidia-smi alias gohomecd /home/B/gaoye alias cdcodecd /home/B/gaoye/code 转载于:https://www.cnblogs.com/yeran/p/11367988.html

OSPF LSA 类型

路由器LSA&#xff1a;每台路由器都创建1类LSA&#xff0c;用于向连接的每个区域描述自己&#xff0c;在每台路由器中&#xff0c;每个区域的LSDB都包含一个1类LSA&#xff0c;它指出了当前路由器的RID和所有接口的IP地址。1类LSA还用于描述末节网络。网络LSA&#xff1a;每个中…

配件商城项目总结

---恢复内容开始--- 一、在首页导航栏上有一个自动摇晃的手机图标 &#xff0c;而我一开始设置的是悬浮摇晃 由于将悬浮设置在图片外面的容器&#xff08;a&#xff09;上导致效果没出来&#xff0c;而且动画效果一直没出来。 解决方法&#xff1a;将悬浮改成自动播放&#xff…

006本周总结报告

这周基本学完了java的基础中的基础&#xff0c;还不会灵活的应用&#xff0c;相关概念仍然有些模糊。为此&#xff0c;自己将自己学到的知识点做了下系统的复习&#xff0c;并作了相关的笔记。这周编程的大部分时间主要用于小学期PTA的编程作业中&#xff08;用C语言&#xff0…

excel小写转大写公式_【Excel函数贴】五个技巧性函数小套路

来吧 来吧 来吧 一起舞蹈 什么烦恼可以将我打扰…………1&#xff0c;字母大小写。一个做外贸的朋友问&#xff0c;Excel有没有函数可以把英文从小写变大写&#xff1f;他可能碰到蛮多洋人的人名或者货名需要大小写转换的。小写转大写&#xff1a;UPPER("excel")大写…

DevExpress A field with the name '' was not found on the selected data source.

绑定控件时发现的错误&#xff0c;找了很久终于找到原因了&#xff0c;可能也是大家没注意的地方&#xff0c;希望能给大家带来一些帮助。 自己在找的时候发现&#xff0c;明明是有的。 结果应该是这样的 上面定义实体类的字段写法有缺陷 这样再重新编译运行后就不会出错了。转…

刚申请了Blog,首贴庆祝!

刚申请了Blog&#xff0c;首贴庆祝&#xff01;转载于:https://www.cnblogs.com/ele-eye/archive/2011/11/17/2252654.html

ReentrantLock实现原理分析

ReentrantLock主要利用CASCLH队列来实现。它支持公平锁和非公平锁&#xff0c;两者的实现类似。 CAS&#xff1a;Compare and Swap&#xff0c;比较并交换。CAS有3个操作数&#xff1a;内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时&#xff0c;将内存值V修…

python编码

Unicode字符集中收录110多万个字符集合。UTF-8&#xff08;8-bit Unicode Transformation Format&#xff09;&#xff0c;是一种针对 Unicode 的可变长度字符编码方式。使用一到四个字节来编码 Unicode 字符 在计算机内存中统一使用Unicode编码&#xff0c;当需要保存到硬盘或…

MySQL性能测试工具 mysqlslap

先看参数介绍 FormatOption FileDescriptionIntroduced--auto-generate-sqlauto-generate-sqlGenerate SQL statements automatically when they are not supplied in files or using command options --auto-generate-sql-add-autoincrementauto-generate-sql-add-autoincreme…

atlas单机模式代码_用代码玩太无聊,这样玩海盗游戏《ATLAS》单机模式才是正确玩法...

在各大单机游戏中&#xff0c;存在很多的代码给玩家使用&#xff0c;利用这些代码&#xff0c;玩家就能和开了挂似得快速通关。这让不少玩家沉迷于代码的世界而无心享受游戏的乐趣&#xff0c;因此在游戏界中经常有代码毁了一款游戏的说法。这点放在最近才上线的海盗冒险生存游…

iSCSI软件套件 介绍

http://blog.csdn.net/do2jiang/article/details/5062586 iSCSI&#xff08;Internet SCSI&#xff09;是2003年IETF&#xff08;InternetEngineering Task Force&#xff0c;互联网工程任务组&#xff09;制订的一项标准&#xff0c;这种指令集合可以实现在IP网络上运行SCSI协…

【Computer Vision】 复现分割网络(1)——SegNet

目录 Tags: ComputerVision编译数据处理训练结果ReferenceTags: ComputerVision 编译 src/caffe/layers/contrastive_loss_layer.cpp:56:30: error: no matching function for call to ‘max(double, float)’ Dtype dist std::max(margin - sqrt(dist_sq_.cpu_data()[i]), Dt…