【问题标题】:Check MP3 link working or corrupted in PHP检查 MP3 链接在 PHP 中是否正常工作或损坏
【发布时间】:2014-03-10 00:14:01
【问题描述】:

我想检查一个 MP3 链接是否存在或损坏。

我有一个链接http://a.tumblr.com/tumblr_l1k295O4mS1qa64mao1.mp3 它正在工作。但是http://a.tumblr.com/tumblr_l1k295O4mS1qa64maosadasdasdasdasd1.mp3 是一个损坏的 MP3 文件链接。

我想要一些想法或代码,我可以在其中使用 PHP 检查 mp3 链接是否正常工作或损坏。

更新:

我觉得是对的。我在Check if links are broken in php找到了

function check_url($url) {

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
$headers = curl_getinfo($ch);
curl_close($ch);

return $headers['http_code'];
}

$check_url_status = check_url($url);
if ($check_url_status == '200')
 echo "Link Works";
else
  echo "Broken Link";

【问题讨论】:

  • 您的具体要求是什么? URL 没有给出404 Not Found 错误就足够了吗?它是否必须指向有效的 MP3 音乐文件?如果它在重定向后导致一个有效的 MP3 文件是可以的,还是必须是直接的?
  • 第一个链接似乎以 mp3 数据和 HTTP 200 OK 响应,而后者以 HTTP 403 禁止响应。只检查 HTTP 响应状态码?
  • 但是使用 php 如何检查它是返回 404 还是 200 响应?
  • 正如@Nico 所说,您要检查 MP3 文件的有效性吗?

标签: php


【解决方案1】:

第二个链接导致来自服务器的 403 响应。最简单的解决方案是使用get_headers():

$url = '...';
$headers = get_headers($url);

// warning: this will also accept 
if (strpos($headers[0], '403 Forbidden')) {
  // link invalid
}

另一种方法是检查实际 XML 输出中的 AccessDenied 值:

<Error>
  <Code>AccessDenied</Code>
  <Message>Access Denied</Message>
  <RequestId>...</RequestId>
  <HostId>
    ...
  </HostId>
</Error>

【讨论】:

  • 可能除了 200 以外的任何东西都是“无效的”
  • 但是使用 php 如何检查它是返回 404 还是 200 响应?
  • @RinkuYadav 阅读有关get_headers() 的文档。有一些示例表明返回数组的第一个条目将包含响应代码。
猜你喜欢
  • 2013-03-24
  • 1970-01-01
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-25
  • 2011-08-26
  • 2012-04-13
相关资源
最近更新 更多