有没有JavaScript方法来做file_get_contents()?

时间:2012-05-21 22:31:12

标签: php javascript

以下是PHP documentation

如果我找不到纯粹的客户端方式来执行此操作,我将在Ajax调用中使用它。

$homepage = file_get_contents('http://www.example.com/');
echo $homepage;

有没有办法做这个客户端,所以我不必把字符串过来?

7 个答案:

答案 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>