APlayer_Plugin::parse PHP Method

parse() private static method

根据参数进一步解析得到歌曲的信息
private static parse ( string $content = '', array $atts = [] ) : array
$content string 标签内的内容,如歌词
$atts array 歌曲的属性
return array 包含解析结果的数组
    private static function parse($content = '', $atts = array())
    {
        //过滤html标签避免出错
        $content = strip_tags($content);
        //取出[lrc]
        $lyric = false;
        if (preg_match('/\\[(lrc)](.*?)\\[\\/\\1]/si', $content, $lyrics)) {
            $lyric = $lyrics[2];
        }
        //最终结果
        $return = array();
        //解析歌词,如果没有[lrc][/lrc]文本歌词但是有lrc的url的话直接从url中读取并缓存
        if (isset($atts['lrc']) && !$lyric) {
            if ($c = self::getlrc($atts['lrc'])) {
                $lyric = $c;
            }
        }
        $atts['lyric'] = false;
        //解析网易云音乐
        if (isset($atts['id'])) {
            $type = isset($atts['type']) ? $atts['type'] : 'song';
            $result = self::parse_netease($atts['id'], $type);
            if ($result) {
                $return = array_merge($return, $result);
            }
        }
        //当网易只返回了一首歌或是插入自己上传的音乐才考虑下方情况
        if (isset($atts['url']) || count($return) === 1) {
            //自定义歌词
            if ($lyric) {
                $atts['lyric'] = $lyric;
            }
            //解析封面
            if (!isset($atts['id']) && isset($atts['url']) && !isset($atts['cover']) || isset($atts['cover']) && $atts['cover'] == 'search') {
                $title = isset($atts['title']) ? $atts['title'] : '';
                $artist = isset($atts['artist']) ? $atts['artist'] : '';
                $words = $title . ' ' . $artist;
                if ($title || $artist) {
                    if ($p = self::getcover($words)) {
                        $atts['cover'] = $p;
                    } elseif ($artist) {
                        if ($p = self::getcover($artist)) {
                            $atts['cover'] = $p;
                        }
                    }
                }
            }
            //标题和艺术家
            if (isset($atts['artist'])) {
                $atts['author'] = $atts['artist'];
            } elseif (!isset($atts['id']) && isset($atts['url'])) {
                $atts['author'] = 'Unknown';
            }
            if (!isset($atts['title']) && !isset($atts['id']) && isset($atts['url'])) {
                $atts['title'] = 'Unknown';
            }
            //假如不要自动查找封面的话
            if (isset($atts['cover'])) {
                if ($atts['cover'] == 'false' || !(bool) $atts['cover']) {
                    $atts['cover'] = '';
                }
                $atts['pic'] = $atts['cover'];
            }
            //判断是修改网易获取的歌曲属性还是添加自己的歌曲链接
            if (!isset($atts['id'])) {
                $return[] = $atts;
            } else {
                //当没有自定义歌词时候删除变量避免覆盖掉原有歌词
                if (!$atts['lyric']) {
                    unset($atts['lyric']);
                }
                $return[0] = array_merge($return[0], $atts);
            }
        }
        return $return;
    }