Estoy realizando unas pruebas con
https://sheety.co/ sirve para tener una API con una hoja de excel que tengamos pública en Google.
En el ejemplo de Sheety puedo obtener el fichero JSON sin problema:
Código:
<html>
<head>
<title>UK Theme Parks</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.12/handlebars.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.getJSON('https://api.sheety.co/uk-theme-parks', function(data) {
var template = Handlebars.compile($('#item-template').html())
$('#items').html(template(data))
})
})
</script>
<script id="item-template" type="text/x-handlebars-template">
<ul>
{{#each this}}
<li><a href="{{website}}">{{name}}</a></li>
{{/each}}
</ul>
</script>
</head>
<body>
<div id="items">Loading theme parks...</div>
</body>
</html>
Quiero realizar el proceso usando únicamente PHP, para ello utilizo el siguiente código:
Código PHP:
<?php
// funcion para evitar problemas con SSL
function file_get_contents_curl( $url ) {
$ch = curl_init();
curl_setopt( $ch, CURLOPT_AUTOREFERER, TRUE );
curl_setopt( $ch, CURLOPT_HEADER, 0 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, TRUE );
$data = curl_exec( $ch );
curl_close( $ch );
return $data;
}
$json_string = 'https://api.sheety.co/uk-theme-parks';
$jsondata = file_get_contents_curl($json_string);
var_dump($jsondata); echo '<br>';
$obj = json_decode($jsondata);
var_dump($obj);
?>
Ejecutando el script PHP obtengo en el $obj bool(false), por lo que entiendo que no estoy accediendo correctamente a la información o no me estoy trayendo realmente el json.