我刚刚遇到一个重要问题,因为我有很多来自另一个域的来源,这意味着如果我使用iframe,我必须调整所有这些内容。但问题是我无法修改或插入代码来源网页。 因为这些,我想问问是否有其他解决方案可以跳过使用iframe? 提示:我需要url中的全部内容(包括图片,CSS等)。不是内容的一部分。有没有什么方法可以替代iframe?
回答
PHP的include功能可能是最好的开始。它只是您无法更改的标记,还是您能够使用PHP和JavaScript?
编辑:
使用include('http://www.google.com')
包括在你的页面的URL,而不使用iframe尝试。代码中的任何非绝对目录引用(如<img src='/img.png'>
将不会显示或加载正确。
如果您需要修复这些引用并且无法更改标记本身,则可以使用file_get_contents
函数并修改这样的事情:
$page = file_get_contents('http://www.google.com');
$page = preg_replace('/(href|src)=([\'"])\//',"$1=$2http://google.com/",$page);
echo $page;
感谢您的意见,我无法调整内容iframe,因为它来自另一个域,最重要的是我无法修改源页面,所以我想替换iframe,可以给我更多的信息或者像一些示例代码谢谢 – xiaohang 2011-05-08 10:03:30
顺便说一下,它不是一个PHP文件,它是一个特定的网址,例如http://www.google.com – xiaohang 2011-05-08 10:11:53
您可以使用PHP的包含函数包含网址,尝试'include“http://www.google.com”;'。如果它不起作用,您可能需要修改您的php.ini文件的'allow_url_include'变量。 如果您需要修改URL中显示的页面内容,可以使用PHP的[file_get_contents](http:// php.net/manual/en/function.file-get-contents.php)功能打开并修改返回的数据。 – 2011-05-10 00:11:34
使用JSONP数据类型进行AJAX调用以返回另一页的内容。您需要对两个域上的代码进行修改才能完成此工作。 http://en.wikipedia.org/wiki/JSONP
谢谢。问题是我无法修改源域中的代码... – xiaohang 2011-05-08 10:05:02
的jQuery加载到一个div http://api.jquery.com/load/
修改@beanland的答案,我/proxy.php文件,用缓存:
$host = parse_url($_GET['url'], PHP_URL_HOST);
$dir = $_SERVER[DOCUMENT_ROOT].'/cache_proxy/'.$host;
if(!is_dir($dir))
mkdir($dir);
$filepath = $dir.'/'.md5($_GET['url']);
if(is_file($filepath)){
include($filepath);
}else{
$page = file_get_contents($_GET['url']);
$page = preg_replace('/(a href)=[\'\"](http.*)[\'\"]/', '$1="http://buy/proxy.php?url=$2"', $page);
$page = preg_replace('/(a href)=[\'"][^http](.*)[\'"]/', '$1="http://buy/proxy.php?url=http://'.$host.'/$2"', $page);
$page = preg_replace('/(href|src)=[\'"][^http+](.*)[\'"]/', '$1="http://'.$host.'/$2"', $page);
file_put_contents($filepath, $page);
echo $page;
}
首先更换所有<a href="">
链接到你的代理,然后将所有相关的<img src="/path...">
等全部替换为绝对<img src="http://...">
- 1. 有没有什么方法可以缩短这个代码呢?
- 2. 有没有什么方法可以使用'unset'作为方法?
- 3. 弃用com.apple.eawt.ApplicationListener的替代方法有什么替代方法
- 4. 使用phpMyAdmin有什么替代方法?
- 5. 使用global.asax有什么替代方法?
- 6. wmctrl有什么替代方法?
- 7. Play.application有什么替代方法()
- 8. 有没有替代IE的replaceAdjacentText方法?
- 9. TextView有没有其他替代方法?
- 10. 有没有什么办法可以优化这段代码?
- 11. 有没有什么办法可以编写简洁的代码?
- 12. 有没有什么方法可以在html中查看文件?
- 13. 有没有什么方法可以定义javascript模式
- 14. 有没有什么方法可以重用java 8中的Stream?
- 15. 有没有什么方法可以自定义card.io SDK?
- 16. 有没有什么方法可以去除这种水印?
- 17. 替代方法没有源代码
- 18. 有没有什么方法可以在运行时编译C++代码?
- 19. 还有什么替代方法可用于+ [LSApplicationWorkspace defaultWorkspace]和-allApplications?
- 20. 有什么方法可以管理onPanResponderMove?
- 21. 有什么方法可以跟踪PDF?
- 22. 有什么方法可以定制TDBadgedCell
- 23. 什么是iframe替代品?
- 24. Java的HttpMethod中的回收方法有什么替代方法?
- 25. Ajax有什么方法或替代方法?
- 26. 还有什么替代方法可以用于pHash开源知觉散列库?
- 27. CSharpOptParse还有什么替代方案?
- 28. SWT TabFolder有什么替代方案?
- 29. InstallShield有什么好的替代方案?
- 30. 论坛有什么替代方案?
我希望其他域可以使用那里的数据。 – epascarello 2011-05-07 22:33:00
是的。我不是一个黑客((::我讨厌客户,因为他们不希望我修改他们的代码,但如果真的不可能,我会与他们谈判 – xiaohang 2011-05-08 10:09:01