2

我想在选择框中获取谷歌网络字体列表以选择字体。我正在尝试以下功能,但它给出了错误。

代码:

function get_google_fonts() {
    $url = "https://www.googleapis.com/webfonts/v1/webfonts?sort=alpha";
    $result = json_response( $url );
        $font_list = array();
        foreach ( $result->items as $font ) {
            $font_list[] .= $font->family;          
        }
        return $font_list;  
}

function json_response( $url )  {
    $raw = file_get_contents( $url, 0, null, null );
    $decoded = json_decode( $raw );
    return $decoded;
}

错误:

Warning: file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP.

如果我将 https 更改为 http,我会收到此错误:

file_get_contents(http://www.googleapis.com/webfonts/v1/webfonts?sort=alpha): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in

我想这是因为我的服务器上的 PHP 设置,我无法更改。那么,有没有其他方法可以从 Google 获取字体列表?谢谢。

4

3 回答 3

6

要允许 https 包装器,您必须具有php_openssl扩展名并启用allow_url_include

您可以编辑您php.ini 以设置这些值:

extension=php_openssl.dll

allow_url_include = On

如果这些值不存在,请添加这些行。

如果您无法编辑 php.ini 文件,则可以在 PHP 文件中进行设置:

ini_set('allow_url_fopen', 'on');
ini_set('allow_url_include', 'on');

您也可以尝试使用CURL而不是file_get_contents. CURLfile_get_contents

$url = "https://www.googleapis.com/webfonts/v1/webfonts?sort=alpha";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
curl_close($ch);

echo $result;

希望这可以帮助。:)

于 2012-09-27T06:45:59.393 回答
3

我认为 Webfonts 拒绝访问非浏览器代理。但是,您可以使用Webfont API。事实上,你需要一个 API 密钥,所以一旦你得到它,你就会使用像这样的 URL

https://www.googleapis.com/webfonts/v1/webfonts?key=YOUR-API-KEY

这一切都记录在提供的链接中。

于 2012-09-27T06:54:24.213 回答
1

Google 需要 SSL,因此请确保在您的服务器上启用了 SSL。

要修复此错误,请转到您的 php.ini 文件,找到 ;sslextension=php_openssl.dll 行并删除分号。

http://php.net/manual/en/function.json-decode.php https://developers.google.com/webfonts/docs/developer_api

    var_dump(json_decode(file_get_contents('https://www.googleapis.com/webfonts/v1/webfonts')));
于 2012-09-27T08:16:56.977 回答