Привет, ребята, я пытаюсь получить информацию от last.fm, я получаю имена альбомов и т. Д., Но я хочу получить из строки 2. Как это получить?
<topalbums artist="Adele" page="1" perPage="1" totalPages="55092" total="55092">
^ отсюда имя, страница, perpage и totalpages
<lfm status="ok"> <topalbums artist="Adele" page="1" perPage="1" totalPages="55092" total="55092"> <album> <name>21</name> <playcount>52308837</playcount> <mbid>c45e0e0e-48c9-4441-aac3-2f2b34202d3c</mbid> <url>https://www.last.fm/music/Adele/21</url> <artist> <name>Adele</name> <mbid>cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493</mbid> <url>https://www.last.fm/music/Adele</url> </artist> <image size="small"> http://img.ruphp.com/php/c894af1e6a735b9bbb2a0312c7719f40.png </image> <image size="medium"> http://img.ruphp.com/php/c894af1e6a735b9bbb2a0312c7719f40.png </image> <image size="large"> http://img.ruphp.com/php/c894af1e6a735b9bbb2a0312c7719f40.png </image> <image size="extralarge"> http://img.ruphp.com/php/c894af1e6a735b9bbb2a0312c7719f40.png </image> </album> </topalbums> </lfm>
$dom = new DOMDocument(); $dom->loadXML($xml); $topAlbums = $dom->getElementsByTagName('topalbums')->item(0); $artist = $topAlbums->getAttribute('artist'); echo $artist; // outputs Adele
Одним из основных способов было бы использовать регулярное выражение:
preg_match('/artist="([^"]*)"\\s*page="([^"]*)"\\s*perPage="([^"]*)"\\s*totalPages="([^"]*)"/', $lastfm_input, $result); # $result[1] = name value # $result[2] = page value # $result[3] = perPage value # $result[4] = totalPages value
Если порядок атрибутов (например, perPage
) изменяется, вам нужно использовать несколько регулярных выражений.
Ребята смешно, я нашел лучшее решение
<?php $attrs = $xml7->topalbums->attributes(); echo $attrs["total"]; ?>