Поиск текста песни

  1. <?php
  2. ///Autor HoldFast
  3. ///2013 year
  4. error_reporting(0);
  5. mb_internal_encoding("UTF-8");
  6.  
  7. class LyricsWikia
  8. {
  9.     function searchSong($artist, $title)
  10.     {
  11.         $artist  = mb_convert_case($artist, MB_CASE_TITLE, "UTF-8");
  12.         $title   = mb_convert_case($title, MB_CASE_TITLE, "UTF-8");
  13.         $replace = array(
  14.             "ё" => "е",
  15.             "Ё" => "Е"
  16.         );
  17.         $artist  = strtr($artist, $replace);
  18.         $title   = strtr($title, $replace);
  19.         $xml     = file_get_contents("http://lyrics.wikia.com/api.php?action=query&prop=revisions&rvprop=content&format=xml&titles=" . rawurlencode($artist) . ":" . rawurlencode($title));
  20.  
  21.         if (!empty($xml)) {
  22.             $xml = @new SimpleXMLElement($xml);
  23.             if (preg_match("/#REDIRECT \[\[(.*):(.*)\]\]/", $xml->query->pages->page->revisions->rev, $m)) {
  24.                 $xml = file_get_contents("http://lyrics.wikia.com/api.php?action=query&prop=revisions&rvprop=content&format=xml&titles=" . rawurlencode($m[1]) . ":" . rawurlencode($m[2]));
  25.                 $xml = @new SimpleXMLElement($xml);
  26.             }
  27.  
  28.             if (empty($xml->query->pages->page->revisions->rev)) {
  29.                 $xml = file_get_contents("http://lyrics.wikia.com/api.php?action=query&prop=revisions&rvprop=content&format=xml&titles=" . rawurlencode($artist));
  30.                 $xml = @new SimpleXMLElement($xml);
  31.                 if (preg_match("/#REDIRECT \[\[(.*)\]\]/", $xml->query->pages->page->revisions->rev, $m)) {
  32.                     $xml = file_get_contents("http://lyrics.wikia.com/api.php?action=query&prop=revisions&rvprop=content&format=xml&titles=" . rawurlencode($m[1]) . ":" . rawurlencode($title));
  33.                     $xml = @new SimpleXMLElement($xml);
  34.                 }
  35.             }            
  36.             $str  = explode('<lyrics>', $xml->query->pages->page->revisions->rev);
  37.             $str  = explode('</lyrics>', $str[1]);
  38.             $text = trim($str[0]);
  39.             if($text == '{{Instrumental}}') $text = 'Instrumental';            
  40.         }
  41.  
  42.         return $text;
  43.     }    
  44.  
  45. }
  46. ?>
Класс для поиска текстов. Все извращения, которые вы увидите в коде - это обязательная фича для поиска по русским текстам :)
  Пример использования:

  1. <?
  2. require "class.lyric.php";
  3.  
  4. $text = new LyricsWikia();
  5. echo str_replace("\n","<br>",$text->searchSong('Arch Enemy', 'Nemesis'));
  6.  
  7. ?>

Реклама

Мы в соцсетях

tw tg yt gt