ホームページ > バックエンド開発 > PHPチュートリアル > PHPはWeChatパブリックプラットフォームのミュージックオンデマンド機能を実装します

PHPはWeChatパブリックプラットフォームのミュージックオンデマンド機能を実装します

WBOY
リリース: 2016-07-25 09:12:00
オリジナル
1109 人が閲覧しました

このコードの実装アイデア: WeChat はインターフェイスを提供しており、データ形式がインターフェイスの XML 形式を満たしている限り、対応する音楽をフォロワーに送信できます

1. WeChat が提供する XML 形式で音楽メッセージを構築します 音楽 XML 形式:

  1. FromUserName>
  2. 12345678
  3. タイトル> <li> 説明> </li> <li> <musicurl> MusicUrl> <li> <hqmusicurl></hqmusicurl> <thumbmediaid></thumbmediaid> /音楽> </li> <li> </li></musicurl> </li>
  4. コードをコピー
データをこの形式に変換する関数を作成します。主なデータは MusicUrl と HQMusicUrl のデータです。前者は通常の品質の音楽で、後者は高品質です。品質、次回は Wi-Fi HQ が最初に再生されます。

プライベート関数transmitMusic($object, $musicArray, $flag = 0)
{
$itemTpl = "
    <li> 説明></li> <li> <musicurl></musicurl> </li> <li> </li> <li> </li>
";
  • $item_str = sprintf($itemTpl, $musicArray['タイトル'], $musicArray['説明'], $musicArray['MusicUrl'], $musicArray['HQMusicUrl']);
  • $textTpl = "
  • > ;
  • %s
  • $item_str
  • %d
  • ";
  • $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $flag);
  • return $resultStr;
  • }
  • コードをコピー
  • 2、構築パラメータ$musicArray
  • $musicArray = array("タイトル"=>$songstr, "説明"=>"歌手:".$singerstr, "MusicUrl"=>$this->getMusicUrl($this- >getMusic($songstr,$singerstr)),"HQMusicUrl"=>$this->getHQMusicUrl($this->getMusic($songstr,$singerstr)));
      コードをコピー
    どこ$songstr 変数と $singerstr 変数は、フォロワーのテキストから受け取る必要があります。まず、特定の形式に従ってテキストを入力するようにフォロワーに通知し、次にこの固定形式に従って曲のアーティスト名を安全に取得します。これを達成するのは難しくありません これは私が書いたものです。$keyword はユーザーが入力した内容です。形式は音楽 + 曲のタイトルと歌手です。たとえば、音楽は冬の Qi Qin に関するものです。と歌手はスペースで区切られます。

    $aa = substr($keyword,strpos($keyword,"Music")+strlen("Music"));//1 つの漢字に対して 2 桁
    $song = substr($aa,0 、strpos($aa," "));
    $singer = substr($aa,strpos($aa," "));
      $songstr = トリム((文字列)$song);
    1. $singerstr = トリム(( string )$singer);
    2. $musicArray = array("Title"=>$songstr, "Description"=>"Singer:".$singerstr, "MusicUrl"=>$this->getMusicUrl($this - >getMusic($songstr,$singerstr)),"HQMusicUrl"=>$this->getHQMusicUrl($this->getMusic($songstr,$singerstr)));
    3. $resultStr = $this-> ; transferMusic($object, $musicArray, $funcFlag);
    4. コードをコピー
    5. w3c にアクセスして、文字列インターセプトの特定の関数の使用方法を確認できます。ここでは、主なことは MusicUrl と HQMusicUrl の内容を取得することです。 百度音楽インターフェース http://box.zhangmen.baidu.com/x?op = 12&count=1&title=TITLE $$AUTHOR$$$$ ブラウザに http://box.zhangmen.baidu.com/x?op=12&count=1&title=About Winter$$Qiqin$$$$ と入力して、インターフェイスによって提供される XML データの内容を確認します。主にエンコードとデコード内のデータは、内部の CDATA の内容、つまり &mid=0.74155984312224 まで取得されますが、この部分は必要ありません。再生できません。結合されたデータは、必須の MusicUrl と HQMusicUrl です。

      3、以下が重要なポイントです。PHP を使用して XML データを解析します PHPの構文が理解できなかったので、かなりの時間を費やしました

      1. //ミュージック・オン・デマンド

      2. function read_child($node)
      3. {
      4. global $musicstr ;
      5. $children = $node->childNodes; // $node のすべての子ノードを取得します。
      6. foreach($children as $e) //各子ノードを読み取るループ
      7. {
      8. /*if($e->nodeType == XML_TEXT_NODE) //子ノードがテキスト型の場合は出力
      9. {
      10. echo $e ->nodeValue."---------"."
        "
      11. }*/
      12. if($e->nodeType == XML_ELEMENT_NODE&&$e->nodeName= ='encode ') //子ノードがテキスト型の場合は出力
      13. {
      14. $musicstr.=$e->nodeValue
      15. }
      16. if($e->nodeType == XML_ELEMENT_NODE&&$e->nodeName; =='decode ') //子ノードがテキスト型の場合は出力
      17. {
      18. $musicstr.=$e->nodeValue."|"
      19. }
      20. if($e->nodeType == XML_ELEMENT_NODE) //子ノードの場合は、関数
      21. {
      22. $this->read_child($e); // ここで、これらのメソッドはすべて $this-> で記述されていることに注意してください。 WeChat の wechatCallbackapiTest クラスなので、これらの関数を呼び出すために追加する必要があります。
      23. }
      24. }
      25. return $musicstr ;
      26. }
      27. function getMusic($song,$singer)

      28. {
      29. $dom = new DomDocument() // DOM オブジェクトを作成します
      30. $dom- >load('http://box.zhangmen.baidu.com/x?op=12&count=1&title='.$song.'$$'.$singer.'$$$$'); // XML を読み取るfile
      31. $root = $dom->documentElement; //XML データのルートを取得します
      32. return $this->read_child($root);
      33. //return $b; //read_child 関数を呼び出してルートを読み取りますobject
      34. }
      35. function getMusicUrl($url)
      36. {
      37. // echo strpos($url,"&")."musciURL";
      38. return substr($url,0,strpos($url,"&"));
      39. }
      40. function getHQMusicUrl($url)
      41. {
      42. //echo strripos($url,"&")."HQmusicURL";
      43. return substr($url,strripos($url,"http"),strripos($url ," &")-strripos($url,"http"));
      44. }
      コードをコピー
      DOMで作成しました、Baiduは他の人に尋ねることを知っています。もちろん、XML データ内の MusicUrl を取得するより良い方法があります。

      1. xml = file_get_contents('http://box.zhangmen.baidu.com/x?op=12&count=1&title=冬について$$Qiqin$$$$');
      2. $result = simplexml_load_string ($ xml);
      3. echo strval($result->url->encode);
      4. echo strval($result->url->decode);
      5. //出力: http://zhangmenshiting.baidu. data2/music/64380827/Z2ZmbGVuaW9fn6NndK6ap5WXcGVpZpuaZJdrbGtqmm1mY2lolppnmpSXZWZubZyclmlmmZaXa3
      6. CTZJeZmW1ncGVll1qin5t1YWBmbGxsamxlaGVrbG9taTE$
      7. 643 80827.mp3?xcode=140db3e8864c55164ad0bce2297ede73eaa48b2ded70843d&mid=0.38763446277961
      コードをコピーします
      効果の画像は次のとおりです:

      PHPはWeChatパブリックプラットフォームのミュージックオンデマンド機能を実装します


    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート