如果我找不到纯粹的客户端方式来执行此操作,我将在Ajax调用中使用它。
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
有没有办法做这个客户端,所以我不必把字符串过来?
答案 0 :(得分:7)
JavaScript无法通过页面抓取数据。它可以调用本地PHP脚本然后代表它并抓取数据,但JavaScript(在浏览器中)不能这样做。
$.post("/localScript.php", { srcToGet: 'http://example.com' }, function(data){
/* From within here, data is whatever your local script sent back to us */
});
您可以使用JSONP和跨源资源共享等选项,但这两个选项都需要设置另一端,因此您不能只选择一个域并开始触发数据请求。
进一步阅读:Same origin policy
答案 1 :(得分:7)
你可以做到
JS代码:
$.post('phppage.php', { url: url }, function(data) {
document.getElementById('somediv').innerHTML = data;
});
PHP代码:
$url = $_POST['url'];
echo file_get_contents($url);
那样可以获得网址的内容。
答案 2 :(得分:3)
不是一般意义上的。跨域限制不允许Javascript代码执行此操作。
如果目标站点设置了CORS(跨源资源共享),则可以使用XMLHttpRequest来加载文件。大多数网站没有,因为出于安全原因,它默认是关闭的,并且很少需要。
如果您只需要包含HTML页面,可以将其粘贴在<iframe>
元素中。但这取决于一些布局问题(页面以固定大小的元素结束)。
答案 3 :(得分:2)
现在是2020年,并且采用了一些现代方法;
async function file_get_contents(uri, callback) {
let res = await fetch(uri),
ret = await res.text();
return callback ? callback(ret) : ret; // a Promise() actually.
}
file_get_contents("https://httpbin.org/get", console.log);
// or
file_get_contents("https://httpbin.org/get").then(ret => console.log(ret));
答案 4 :(得分:1)
或者您可以使用php.js库。这允许一些PHP函数的JavaScript。 file_get_contents()函数就是其中之一。
<script>
var data = file_get_contents('Your URL');
</script>
你可以找到更多关于php.js的信息:http://phpjs.org/
答案 5 :(得分:1)
此函数将像PHP file_get_contents()
一样以字符串形式返回文件。
function file_get_contents(filename) {
fetch(filename).then((resp) => resp.text()).then(function(data) {
return data;
});
}
但是,与PHP不同,JavaScript会继续执行下一条语句,而不是等待数据返回。
答案 6 :(得分:-1)
<div id="svg">
</div>
<script>
function file_get_contents(uri, callback) {
fetch(uri).then(res => res.text()).then(text =>
{
var xmlSvg =text;
console.log(xmlSvg );
document.getElementById('svg').innerHTML = xmlSvg;
})
}
var uri ='You-urlllllllll-svg';
file_get_contents(uri);
</script>