2010-01-20 85 views
21

我需要从中获取json数据 http://vortaro.us.to/ajax/epo/eng/ +'word'+“/?callback =?” 工作示例(没有足够的声望)获取使用php的json

我知道如何在JavaScript中做到这一点,但我需要我的PHP文件来获取这些数据,它需要服务器端,谢谢我是新的我花了整整一天的时间弄清楚这一点。 fopen和fread无法正常工作,

<?php 
$vorto = $_GET['vorto']; // Get the Word from Outer Space and Search for it! 

if (isset($vorto)) 
    { 
    echo $vorto; 
    } else { 
     $Help = "No Vorto -> add ?vorto=TheWordYouWant to the end of this website"; 
     echo $Help; 
    } 
$url1 = "http://vortaro.us.to/ajax/epo/eng/"; 
$url2 = "/?callback=?"; 
$finalurl= $url1 . $vorto . $url2; 

/* 
PLEASE HELP 

$v1 = fopen($finalurl ,"r"); 
echo $v1; 


$frv1 = fread($v1,filesize($v1)); 
echo $frv1 ; 

*/ 

?> 

回答

60

file_get_contents()可用于URL。处理http页面下载的简单方便的方法。

完成后,您可以使用json_decode()将数据解析为有用的内容。

+1

file_get_contents()?是否需要安装另一个php模块? :D – gumuruh 2012-04-18 08:55:10

+0

@gumuruh:file_get_contents()是内置于PHP的。 :-) – 2012-11-08 22:46:56

+16

'$ data = json_decode(file_get_contents('http://sample.com/stuff.json'));' – Costa 2012-11-16 04:49:55

14

看看PHP Curl

有了这个例子,你可以得到所有的信息。

<?php 
// create a new cURL resource 
$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 

// grab URL and pass it to the browser 
curl_exec($ch); 

// close cURL resource, and free up system resources 
curl_close($ch); 
?> 

确保PHP Curl在您的php.ini中启用。如果你想使用fopen,你的php.ini文件中的allow_url_fopen必须是'ON'。检出所有设置的phpinfo()。

自PHP 5.2.0起,函数json_decode是核心的一部分。

1

老问题,但仍然是谷歌的顶级点击之一,所以这里是我在@ DrDol的答案之上的贡献。

<? 
    $url = "http://www.example.com/api/v1/endpoint"; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

    $data = json_decode(curl_exec($ch));     

    curl_close($ch); 
?> 

注意其发送响应到的返回值(以及在失效返回false)的CURLOPT_RETURNTRANSFER的用户。