PHP从shell_exec获取一些部分

PHP从shell_exec获取一些部分,php,curl,terminal,shell-exec,Php,Curl,Terminal,Shell Exec,我需要你们的帮助伙计们我的服务器上运行了一些php代码: <?php if ($_GET['id']) $id = $_GET['id']; $json = file_get_contents('http://www.youtubeinmp3.com/fetch/?format=JSON&video=http://www.youtube.com/watch?v=' . $id); $data = json_decode($json, true); $stream =

我需要你们的帮助伙计们我的服务器上运行了一些php代码:

<?php
if ($_GET['id'])
$id = $_GET['id'];
$json = file_get_contents('http://www.youtubeinmp3.com/fetch/?format=JSON&video=http://www.youtube.com/watch?v=' . $id);
    $data = json_decode($json, true);
    $stream = $data['link'];
    $url    = $stream;



$output = shell_exec ('curl -I -L ' . $url);
echo "<pre>$output</pre>";
?>
但我不需要这些东西我只需要两样东西: (位置:)和(内容处置:附件;文件名=)

在两个不同的变量中,因此在这种情况下,我需要:

//w23.youtubeinmp3.com/download/get/?id=HgzGwKwLmgM&r=kT7YFcbHgX3m25ULP3GeWulVx9OmT2qd&t=Queen+-+Don%27t+Stop+Me+Now+%28官方+视频%29

女王-现在不要阻止我(官方视频)(顺便说一句,我不要.mp3)

我到处都在网上搜索过,但说实话,我在这方面完全是个傻瓜
因此,如果有人能帮我解决这个问题,如果你只想要你在问题上所写的文件名和标题,那就太棒了

你可以这样简单地使用它们

echo "<a href=$link>$title</a>";
<?php
if (isset($_GET['id'])) {
  $id = $_GET['id'];
  $json = file_get_contents('http://www.youtubeinmp3.com/fetch/?format=JSON&video=http://www.youtube.com/watch?v=' . $id);
  $data = json_decode($json, true);

  $link = $data['link'];
  $title = $data['title'];

  echo "<a href=$link>$title</a>";
  }
?>  
一旦你有了它,你可以像这样打印它或与它建立链接

echo "<a href=$link>$title</a>";
<?php
if (isset($_GET['id'])) {
  $id = $_GET['id'];
  $json = file_get_contents('http://www.youtubeinmp3.com/fetch/?format=JSON&video=http://www.youtube.com/watch?v=' . $id);
  $data = json_decode($json, true);

  $link = $data['link'];
  $title = $data['title'];

  echo "<a href=$link>$title</a>";
  }
?>  
echo”“;
除非要保存文件,否则不需要curl(和shell_Exec)部分

它看起来像这样:

<?php
header('content-type: text/plain');
$id='HgzGwKwLmgM';
$json = file_get_contents('http://www.youtubeinmp3.com/fetch/?format=JSON&video=http://www.youtube.com/watch?v=' . $id);
$json = json_decode($json, true);
$url = $json['link'];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
$header = curl_exec($ch);
$link = curl_getinfo($ch,CURLINFO_REDIRECT_URL);
echo "\nLINK:  $link\n\nHEADER: $header";

?>

此代码经过测试。已从我的浏览器复制响应。

我只是使用curl来执行curl请求,并使用
curl\u getinfo($ch,CURLINFO\u REDIRECT\u URL)
来获取重定向链接。

我还添加了获取您不需要的标题,除非有问题并且您希望看到响应标题。

PHP

要查看工作示例:我不需要使用curl来跟随重定向来获取直接链接,您只需使用preg_匹配:preg_匹配('(位置:.*),$output,$result);
LINK:  http://w23.youtubeinmp3.com/download/get/?id=HgzGwKwLmgM&r=aRDQ1MGdfkY3Mm6EFxQqEVqgd9FHf81q&t=Queen+-+Don%27t+Stop+Me+Now+%28Official+Video%29

HEADER: HTTP/1.1 302 Moved Temporarily
Date: Sun, 12 Feb 2017 16:23:39 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: __cfduid=d27df4bad722b0449b88b37d4b9d9b7341486916619; expires=Mon, 12-Feb-18 16:23:39 GMT; path=/; domain=.youtubeinmp3.com; HttpOnly
X-Powered-By: PHP/5.5.38
Location: //w23.youtubeinmp3.com/download/get/?id=HgzGwKwLmgM&r=aRDQ1MGdfkY3Mm6EFxQqEVqgd9FHf81q&t=Queen+-+Don%27t+Stop+Me+Now+%28Official+Video%29
Server: cloudflare-nginx
CF-RAY: 330162e8b07e115f-DFW