Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Регулярка

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
event
Отправлено: 22 Августа, 2012 - 14:40:01
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Привет, помогите написать регулярку чтобы парсила http://www.kinopoisk.ru/film/481086/, список актеров (только "В гланых роля"), роли дублировали парсить не не нужно...
 
 Top
EuGen Администратор
Отправлено: 22 Августа, 2012 - 15:20:10
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1. preg_match_all('/\<span\s+itemprop\="actors"\>\<a\s+href\="[^"]+"\>(.*?)\<\/a\>\<\/span\>/i', file_get_contents('http://www.kinopoisk.ru/film/481086/'), $rgMatches);
  2. //var_dump($rgMatches);

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
event
Отправлено: 22 Августа, 2012 - 15:48:21
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




[quote=EuGen][/quote]
Работает, сделал так:
PHP:
скопировать код в буфер обмена
  1. preg_match_all('/\<span\s+itemprop\="actors"\>\<a\s+href\="[^"]+"\>(.*?)\<\/a\>\<\/span\>/i', $html_kinopoisk, $rgMatches);
  2. $rgMatches = $rgMatches[1];
  3. foreach ($rgMatches as $person) {
  4.        
  5. echo $person . "<br />";
  6.  
  7. }


Но в итоге он парсит, сразу же и Роли Дублировали, а мне нужно лишь в главных ролях...

Короче получаю я такой результат
CODE (text):
скопировать код в буфер обмена
  1. Кирстен Данст
  2. Джим Стёрджесс
  3. Стелла Маив
  4. Джэйн Хейтмейер
  5. Нил Напье
  6. Джон МакЛарен
  7. Ларри Дэй
  8. Дон Джордан
  9. Холли О’Брайэн
  10. Агнешка Вроновска
  11. ...
  12. Василиса Воронина
  13. Всеволод Кузнецов
  14. Александр Гаврилин
  15. Денис Беспалый
  16. Михаил Тихонов
  17. ....


Теперь нужно все обрезать снизу до вверху включая ...
 
 Top
KingStar
Отправлено: 22 Августа, 2012 - 16:04:52
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




PHP:
скопировать код в буфер обмена
  1. $person = explode('...', $person);
  2. echo $person['0']; /* В главных ролях */
  3. echo $person['1']; /* Роли дублировали */

(Отредактировано автором: 22 Августа, 2012 - 16:08:20)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
event
Отправлено: 22 Августа, 2012 - 16:21:32
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




preg_match_all('/\<span\s+itemprop\="actors"\>\<a\s+href\="[^"]+"\>(.*?)\<\/a\>\<\/span\>/i', $html_kinopoisk, $rgMatches);
$rgMatches = $rgMatches[1];
foreach ($rgMatches as $person) {
$person = explode('...', $person);
echo $person[0] . "<br />";

}

Выводит так

Кирстен Данст
Джим Стёрджесс
Стелла Маив
Джэйн Хейтмейер
Нил Напье
Джон МакЛарен
Ларри Дэй
Дон Джордан
Холли О’Брайэн
Агнешка Вроновска

Василиса Воронина
Всеволод Кузнецов
Александр Гаврилин
Денис Беспалый
Михаил Тихонов



Из выдачи, кто дублировал, тоже надо удалить.
(Добавление)
Как удалить все что после ...?
 
 Top
KingStar
Отправлено: 22 Августа, 2012 - 18:24:38
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




PHP:
скопировать код в буфер обмена
  1. preg_match_all('/\<span\s+itemprop\="actors"\>\<a\s+href\="[^"]+"\>(.*?)\<\/a\>\<\/span\>/i', $html_kinopoisk, $rgMatches);
  2.  
  3. $actor = '';
  4. foreach ($rgMatches[1] as $person)
  5. {      
  6.    $actor .= $person."<br />";
  7. }
  8.  
  9. $actor = explode('...', $actor);
  10. echo $actor[0];

(Отредактировано автором: 22 Августа, 2012 - 18:25:22)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
event
Отправлено: 22 Августа, 2012 - 21:03:44
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Подскажите, как это все можно через implode организовать?
 
 Top
KingStar
Отправлено: 22 Августа, 2012 - 21:08:08
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




стоп, я вот подумал, можно походу еще проще

PHP:
скопировать код в буфер обмена
  1. preg_match_all('/\<span\s+itemprop\="actors"\>\<a\s+href\="[^"]+"\>(.*?)\<\/a\>\<\/span\>/i', $html_kinopoisk, $rgMatches);
  2.  
  3. foreach ($rgMatches[1] as $person)
  4. {      
  5.         $person = trim($person);
  6.        
  7.         if($person == '...')
  8.         {
  9.                 break;
  10.         }
  11.         else
  12.         {
  13.                 echo $person."<br />";
  14.         }
  15. }


-----
То что программа работает, не означает что она написана правильно!
 
 Top
event
Отправлено: 22 Августа, 2012 - 21:21:54
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Мне нужно потому чтобы через запятую после каждого актера, и в одну строчку... вроде так через имплоде сделать можно
 
 Top
KingStar
Отправлено: 22 Августа, 2012 - 21:23:07
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)






меняем на


(Добавление)
дай угадаю - нужно убрать последнюю запятую Хм


-----
То что программа работает, не означает что она написана правильно!
 
 Top
event
Отправлено: 22 Августа, 2012 - 21:26:56
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




ага
 
 Top
KingStar
Отправлено: 22 Августа, 2012 - 21:26:59
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




PHP:
скопировать код в буфер обмена
  1. preg_match_all('/\<span\s+itemprop\="actors"\>\<a\s+href\="[^"]+"\>(.*?)\<\/a\>\<\/span\>/i', $html_kinopoisk, $rgMatches);
  2.  
  3. $actor = array();
  4. foreach ($rgMatches[1] as $person)
  5. {      
  6.         $person = trim($person);
  7.        
  8.         if($person == '...')
  9.         {
  10.             break;
  11.         }
  12.         else
  13.         {
  14.                         $actor[] = $person;
  15.         }
  16. }
  17.  
  18. echo implode(', ', $actor);


-----
То что программа работает, не означает что она написана правильно!
 
 Top
event
Отправлено: 22 Августа, 2012 - 21:30:11
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Вроде воркает
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB