0

jPlayerをプレイリストのmp3プレーヤーとして使用するために、Soundcloud API+PHPを使用してsoundcloudトラックに関する情報を取得しています。これで、トラックを再生するために、mp3への実際のリンクを除くトラックに関するすべての情報に完全にアクセスできるようになりました。

APIによると、トラックでストリーミングが許可されている場合は、ストリームURLをcURLする必要があります(例:http ://api.soundcloud.com/tracks/24887826/stream?client_id = xxx )。

さて、それをcURLしようとすると、私の結果は単純なHTMLビットになります<html><body>You are being <a href="http://ak-media.soundcloud.com/sjkn57c6gAA5.128.mp3?AWSAccessKeyId=AKIAJBHW5FB4ERKUQUOQ&amp;Expires=1318411541&amp;Signature=yaX7Noe%2F8c5dFF0H%2BGfhZ%2FX0130%3D&amp;__gda__=1318411541_6ed9d2af39e51b5f1e94e659eff0495d">redirected</a>.</body></html>

私が欲しいリンクは全体media.soundcloud.com/sjkn57c6gAA5であり、それだけです。ただし、xpathを実行しようとすると、'//a/@href'結果が返されません。ファイルへの適切なリンクを生成できるように、このリンクを取得する方法の正しい方向を誰かに教えてもらえますか?

よろしくお願いします!

トレ

4

1 に答える 1

0

HTMLでxpathを使用している場合(HTMLはXHTMLであり、いくつかのタグを閉じる必要がない限り、HTMLはXMLのサブセットではないため、推奨されません)、// html / body/aである必要はありません。 / @href?

それ以外の場合は、正規表現を使用してURLを抽出できます。

if(preg_match('/href="(.*?)"/', $m)) {
    $url = $m[1];
}

または、他の部分を削除するために絞り込むこともできますが、APIがURLが常に同じ形式であることを保証することはできないため、非常に注意する必要があります(たとえば、サブドメインは常にメディアで終わります)。

于 2011-10-12T09:41:54.430 に答える