Проблема с динамическим URL в SoundCloud

У меня есть текстовый файл, который содержит список URL-адресов дорожек soundcloud. У меня также есть php-файл, который случайным образом выбирает один из этих URL-адресов и позволяет мне получить его в другом php-файле. Теперь по какой-то причине, когда я устанавливаю $ url в качестве случайно выбранного URL-адреса и вызываю его в следующей строке. Я получаю только текстовую версию URL, а не встроенный код iframe soundcloud.

<?php

//Get the SoundCloud URL
$url = $_GET['type'] = 0; include 'http://example.com/randomselector.php';

//Get the JSON data of song details with embed code from SoundCloud oEmbed
$getValues=file_get_contents(
'http://soundcloud.com/oembed?format=js&url='.$url.'&iframe=true');

//Clean the Json to decode
$decodeiFrame=substr($getValues, 1, -2);

//json decode to convert it as an array
$jsonObj = json_decode($decodeiFrame);

//Change the height of the embed player if you want else uncomment below line
echo $jsonObj->html;
?>

Я попытался вручную вставить URL во второй строке, и это работает правильно. Это означает, что я получил код для встраивания iframe.

Это randomselector.php

    <?php

/* File, where the random text/quotes are stored one per line */
$settings['text_from_file'] = 'http://example.com/list.txt';

/*
How to display the text?
0 = raw mode: print the text as it is, when using RanTex as an include
1 = Javascript mode: when using Javascript to display the quote
*/
$settings['display_type'] = 0;

/* Allow on-the-fly settings override? 0 = NO, 1 = YES */
$settings['allow_otf'] = 1;

/*******************************************************************************
*******************************************************************************/

/* Override type? */
if ($settings['allow_otf'] && isset($_GET['type']))
{
$type = intval($_GET['type']);
}
else
{
$type = $settings['display_type'];
}

/* Get a list of all text options */
if ($settings['text_from_file'])
{
$settings['quotes'] = file($settings['text_from_file']);
}

/* If we have any text choose a random one, otherwise show 'No text to choose from' */
if (count($settings['quotes']))
{
$txt = $settings['quotes'][array_rand($settings['quotes'])];
}
else
{
$txr = 'No text to choose from';
}

/* Output the image according to the selected type */
if ($type)
{
/* New lines will break Javascript, remove any and replace them with <br /> */
$txt = nl2br(trim($txt));
$txt = str_replace(array("\n","\r"),'',$txt);
echo 'document.write(\''.addslashes($txt).'\')';
}
else
{
echo $txt;
}
?>

Это список.txt

Link1
Link2
Link3

0

Решение

Попробуйте curl insted из file_get_contents.

https://developers.soundcloud.com/docs/api/reference#oembed

Смотрите изменения:

<?php

//Get the SoundCloud URL
$url = $_GET['type'] = 0;
include 'randomselector.php';

$url = getUrl();

$curlurl = 'http://soundcloud.com/oembed?format=json&url='.$url;

//curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$curlurl);
$result=curl_exec($ch);
curl_close($ch);

//sometimes you will get an error
//  $result = file_get_contents($curlurl);

$result = json_decode($result, true);
echo $result['html'];
?>

randomselector.php

 <?php
function getUrl(){
/* File, where the random text/quotes are stored one per line */
$settings['text_from_file'] = 'list.txt';

/*
How to display the text?
0 = raw mode: print the text as it is, when using RanTex as an include
1 = Javascript mode: when using Javascript to display the quote
*/
$settings['display_type'] = 0;

/* Allow on-the-fly settings override? 0 = NO, 1 = YES */
$settings['allow_otf'] = 1;

/*******************************************************************************
*******************************************************************************/

/* Override type? */
if ($settings['allow_otf'] && isset($_GET['type']))
{
$type = intval($_GET['type']);
}
else
{
$type = $settings['display_type'];
}

/* Get a list of all text options */
if ($settings['text_from_file'])
{
$settings['quotes'] = file($settings['text_from_file']);
}

/* If we have any text choose a random one, otherwise show 'No text to choose from' */
if (count($settings['quotes']))
{
$txt = $settings['quotes'][array_rand($settings['quotes'])];
}
else
{
$txr = 'No text to choose from';
}

/* Output the image according to the selected type */
if ($type)
{
/* New lines will break Javascript, remove any and replace them with <br /> */
$txt = nl2br(trim($txt));
$txt = str_replace(array("\n","\r"),'',$txt);
//    echo 'document.write(\''.addslashes($txt).'\')';
}
else
{
//    echo $txt;
}
return $txt;
}
?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]