Помогите с регулярным выражением

SuperRomario

Бывалый
Сообщения
49
Реакции
25
Всем привет, пытаюсь в своем парсере zk сделать вывод id артиста и картинки, остался последний шаг, нужно по регулярному выражению из строки
HTML:
<a href="" onclick="playView($(this)); return false;" class="song-control-play" data-artist_id="1031319" data-icon="/userdata/artist/863f01318c130e5b6892102d558f656e.jpg"  data-id="20582753" data-duration="225" data-url="/download/20582753"  data-artist="Kazka" data-title="Плакала"></a>
выбрать содержимое из data-artist_id и data-icon
помогите составить выражение для функции preg_match()
 

netbin

Местный житель
Клиент
Сообщения
26
Реакции
4
Если например ты вытащил строку так $name = $html->find('div.title_box h1', 0);
То можно взять значения атрибутов так $track_link = $main_url . $key->href . "\n"; (Тут значение атрибута href)
А у тебя должен быть по другому, например
$artist_html = find('div...................', 0);
$data-artist_id = 'data-artist_id';
$data-artist_id = $artist_html->$data-artist_id;
 

MSE-Script

Developer
Команда форума
Сообщения
867
Реакции
309
составить выражение для функции preg_match()
DOM и регулярки - плохая практика. Для PHP есть множество шустрых библиотек, позволяющие работать с DOM как с обычным объектом. Извлечение данных из кода страницы занимает несколько строк кода.
 

igrovik

Ветеран
Сообщения
108
Реакции
56
Всем привет, пытаюсь в своем парсере zk сделать вывод id артиста и картинки, остался последний шаг, нужно по регулярному выражению из строки
HTML:
<a href="" onclick="playView($(this)); return false;" class="song-control-play" data-artist_id="1031319" data-icon="/userdata/artist/863f01318c130e5b6892102d558f656e.jpg"  data-id="20582753" data-duration="225" data-url="/download/20582753"  data-artist="Kazka" data-title="Плакала"></a>
выбрать содержимое из data-artist_id и data-icon
помогите составить выражение для функции preg_match()
PHP:
$url = HTTP:///';
if(preg_match(data-artist_id="(.*?)" data-icon="(.*?)",$url,$fails)){
$posters = $fails[1];
$artist_id = $fails[0];

}else{
$posters = false;
$artist_id = false;
}

p/s

Если требуется использовать не большого выбора то требуется не preg_match а preg_match_all + перебор ( либол for либо foreach)
 
Последнее редактирование:

n0n4m3

Эксперт
Сообщения
321
Реакции
81
@SuperRomario, Я сделал через speedbar + написал модуль дополнительный и не заморачивался.
 

igrovik

Ветеран
Сообщения
108
Реакции
56
DOM и регулярки - плохая практика. Для PHP есть множество шустрых библиотек, позволяющие работать с DOM как с обычным объектом. Извлечение данных из кода страницы занимает несколько строк кода.
Это да но человеку который не знает хотя бы азы php тобишь как работать с тем же preg_match . Разобраться с условиями библиотеки будет не намного легче! :)
 

SuperRomario

Бывалый
Сообщения
49
Реакции
25
Если например ты вытащил строку так $name = $html->find('div.title_box h1', 0);
То можно взять значения атрибутов так $track_link = $main_url . $key->href . "\n"; (Тут значение атрибута href)
А у тебя должен быть по другому, например
$artist_html = find('div...................', 0);
$data-artist_id = 'data-artist_id';
$data-artist_id = $artist_html->$data-artist_id;
Спасибо, это вариант помог.
 

SuperRomario

Бывалый
Сообщения
49
Реакции
25
Это да но человеку который не знает хотя бы азы php тобишь как работать с тем же preg_match . Разобраться с условиями библиотеки будет не намного легче! :)
Вот как раз азы это все что я знаю, могу поковырять чей-то код и методом "тыка", по примерам что-то да сделать.
 

igrovik

Ветеран
Сообщения
108
Реакции
56
Вот как раз азы это все что я знаю, могу поковырять чей-то код и методом "тыка", по примерам что-то да сделать.
На азах ковырять чужой код не очень хорошо, так как потом бывают ситуации что к автору кода прилетают претензии о баге в скрипте :) . Раз ве что вы это делаете для себя тогда другой случай!
 

SuperRomario

Бывалый
Сообщения
49
Реакции
25
На азах ковырять чужой код не очень хорошо, так как потом бывают ситуации что к автору кода прилетают претензии о баге в скрипте :) . Раз ве что вы это делаете для себя тогда другой случай!
Исключительно в личных целях))
 
Сверху