> 백엔드 개발 > PHP 튜토리얼 > PHP는 WeChat 공개 플랫폼의 주문형 음악 기능을 구현합니다.

PHP는 WeChat 공개 플랫폼의 주문형 음악 기능을 구현합니다.

WBOY
풀어 주다: 2016-07-25 09:12:00
원래의
1113명이 탐색했습니다.

이 코드의 구현 아이디어: WeChat은 데이터 형식이 제공하는 인터페이스의 XML 형식을 충족하는 한 해당 음악을 팔로워에게 보낼 수 있습니다

1. WeChat에서 제공하는 XML 형식으로 음악 메시지를 구성합니다. 음악 XML 형식:

  1. 12345678 >
  2. 제목>
  3. ; ;
  4. HQMusicUrl>
  5. 코드 복사
데이터를 이 형식으로 변환하는 함수를 작성하세요. 주요 데이터는 MusicUrl 및 HQMusicUrl의 데이터이며, 후자는 Wi-Fi 상태입니다. HQ 플레이를 우선시하세요.

비공개 함수 submitMusic($object, $musicArray, $flag = 0)
{
    $itemTpl = "
  1. 제목>
  2. 설명>
  3. < ;MusicUrl>
  4. 음악>";
  5. $item_str = sprintf($itemTpl, $musicArray['Title'], $musicArray['Description'], $musicArray['MusicUrl'], $musicArray['HQMusicUrl']);
  6. $textTpl = "
  7. %s
  8. $item_str
  9. %d
  10. ";
  11. $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $flag);
  12. return $resultStr;
  13. }
  14. 코드 복사
2, 구성 매개변수 $musicArray

$musicArray = array("Title"=>$songstr, "Description"=>"Singer:".$singerstr, "MusicUrl"= >$this->getMusicUrl($this->getMusic($songstr,$singerstr)),"HQMusicUrl"=>$this->getHQMusicUrl($this->getMusic($songstr,$singerstr) ));
  1. 코드 복사
$songstr 및 $singerstr 변수는 팔로어로부터 텍스트를 수신해야 합니다. 먼저 팔로어에게 특정 형식의 텍스트, An을 입력하도록 상기시킵니다. 란은 이 정해진 형식에 따라 가수의 이름을 가로챕니다. 이는 달성하기 어렵지 않습니다 이것이 제가 작성한 것입니다. $keyword는 사용자가 입력한 내용입니다. 형식은 음악 노래 제목 가수입니다. 음악은 겨울의 Qi Qin에 관한 것입니다. 공백으로 구분됩니다.

$aa = substr($keyword,strpos($keyword,"Music") strlen("Music"));//중국어 1개 위치 2개 문자
$song = substr($aa,0,strpos($aa," "));
    $singer = substr($aa,strpos($aa," "));
  1. $songstr = Trim((string)$song);
  2. $singerstr = Trim((string)$singer);
  3. $musicArray = array("Title"=>$songstr, "Description"=>"Singer : ".$singerstr, "MusicUrl"=>$this->getMusicUrl($this->getMusic($songstr,$singerstr)),"HQMusicUrl"=>$this->getHQMusicUrl($this- > ;getMusic($songstr,$singerstr)));
  4. $resultStr = $this->transmitMusic($object, $musicArray, $funcFlag);
  5. 코드 복사

특정 문자열 차단 기능 사용법은 w3c에서 확인할 수 있습니다. 자세한 내용은 다루지 않겠습니다. 가장 중요한 것은 MusicUrl 및 HQMusicUrl의 콘텐츠를 얻는 것입니다. Baidu 음악 인터페이스 http://box.zhangmen.baidu.com/x?op = 12&count=1&title=TITLE $$AUTHOR$$$$ 인터페이스에서 제공하는 XML 데이터의 내용을 관찰하려면 주로 인코딩 및 이 두 데이터는 서로 연결되어 있습니다. 내부의 CDATA 내용은 xcode의 끝 부분, 즉 &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') //sub인 경우 노드가 텍스트 유형인 경우
  17. {
  18. $musicstr.=$e->nodeValue."|"
  19. }
  20. if($e->nodeType = = XML_ELEMENT_NODE) ​​​​//자식 노드가 노드 객체인 경우 처리 함수를 호출합니다.
  21. {
  22. $this->read_child($e) //여기서는 $this-> 이 메소드들은 모두 WeChatCallbackapiTest 클래스에 WeChat으로 작성되어 있기 때문에 이 함수를 호출하려면 이를 추가해야 합니다.
  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 파일 읽기
  31. $root = $dom->documentElement; //XML 데이터의 루트 가져오기
  32. return $this->read_child($ root);
  33. //return $b; //read_child 함수를 호출하여 루트 객체를 읽습니다.
  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- > 디코드);
  5. //출력: http://zhangmenshiting.baidu.com/data2/music/64380827/Z2ZmbGVuaW9fn6NndK6ap5WXcGVpZpuaZJdrbGtqmm1mY2lolppnmpSXZWZubZyclmlmmZaXa3
  6. CTZJeZmW1ncG in5t1YWBmbGxsamxlaGVrbG9taTE$
  7. 64380827.mp3?xcode=140db3e8864c55164ad0bce2297ede73eaa48b2ded70843d&mid=0.38763446277961
코드 복사

렌더링은 다음과 같습니다.

PHP는 WeChat 공개 플랫폼의 주문형 음악 기능을 구현합니다.



원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿