我正在构建一个PHP应用程序,允许用户上传广告并在特定网站的特定页面上进行预览。现在,我通过截取网页截图,删除广告以及放置自己的广告来做到这一点。这看起来很愚蠢。如何使用PHP加载外部页面并替换该页面上的内容?
什么是最好的方式来获取一个URL的内容并替换出现在该页面上的某个特定的代码?
我正在构建一个PHP应用程序,允许用户上传广告并在特定网站的特定页面上进行预览。现在,我通过截取网页截图,删除广告以及放置自己的广告来做到这一点。这看起来很愚蠢。如何使用PHP加载外部页面并替换该页面上的内容?
什么是最好的方式来获取一个URL的内容并替换出现在该页面上的某个特定的代码?
DOMDocument
对象DOMDocument
对象上使用XPath
取代实施例:
<?php
$dom = new DOMDocument();
$dom->strictErrorChecking = false;
$dom->loadHTMLFile("http://www.example.com");
$xpath = new DOMXPath($dom);
$logoImage = $xpath->query("//div[@id='header-logo']//a//img")->item(0);
$logoImage->setAttribute('src', 'http://www.google.com/images/logos/ps_logo2.png');
$logoLink = $xpath->query("//div[@id='header-logo']//a")->item(0);
$logoLink->setAttribute('href', 'http://www.google.com/');
echo $dom->saveHTML();
?>
的示例加载的example.com
源并用google.com
的徽标和谷歌链接取代徽标。
的代码没有任何验证,但应该是很容易修改为您的需求:)
我不知道完整的情况是怎么样,你想执行此操作。 但是基于你的问题,最好的方法是使用Ajax。
通过Ajax传递您要显示的页面的详细信息,并在php过滤器页面中显示并返回所需的结果。
并且在Ajax请求结束时在特定位置显示您的结果。
即使在JavaScript中,您也可以根据需要过滤Ajax请求返回的结果。
这一切归结为,如果您希望将工作做到客户端或服务器端,客户端可能会做更多的工作。 – 2011-06-04 05:00:56
是的尼克拉你是对的。但是当我考虑给定的情况时,它听起来可能是用户可能上传多个广告,他希望从一个位置查看他的广告。所以只要把这个留在我脑海中,我就给予了我的回答,赞成客户端。不过,我个人不会在客户端进行过滤。我总是在php中准备理想的结果,只是使用js来正确显示 – tejash 2011-06-04 05:19:37
不要误解我的意思,客户端通常对于最终用户来说更加动态和更好,它只是需要更多的工作:) – 2011-06-04 05:22:09
实际上,您可以使用带有* http *流包装的[DOMDocument :: loadHTMLFile](http://php.net/domdocument.loadhtmlfile)并完全跳过'file_get_contents'步骤。 – netcoder 2011-06-04 04:38:34
是的,我意识到在编写示例的同时:) – 2011-06-04 04:44:13