- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть такой код в html-странице:
Хотелось бы получать содержимое <div class="upload1" в виде массива.
Пробовал писать выражение хотя бы для парсинга, но оно не работает:
preg_match('/<div class="upload1">(.*)<div id=/U', $file, $trunc);Подскажите, пожалуйста, как правильно написать регулярное выражение?
П.С. Сразу скажу, парсинг не для воровства контента с торрентов, а для того, чтобы мне иметь информацию о новых сериях любимых сериалов на одной странице, вместо открывания 20 страниц каждый день :)
Добавьте флаг s
preg_match('/<div class="upload1">(.*)<div id=/Us', $file, $trunc);
Сначала нужно preg_match <div class="upload1" всё что внутри взять то что нужно.
А потом всё закинуть в preg_match_all и уже там получается массив.
Или сразу preg_match_all, я просто не знаю один ли там этот класс у вас или нет.
Хотелось бы получать содержимое <div class="upload1" в виде массива.
Вы опишите какой массив в итоге должен получиться.
И, как выше указал LEOnidUKG, сообщите сколько таких <div class="upload1">...</div> на страницу. Один или же там список.
Далее в странице идут еще такие же блоки:
<div class="upload1">...</div>
Их может быть больше 10 штук, нужен первый, а лучше первые 3, встретившиеся на странице.
Массив хотел такой строка 1 => '9-й сезон/ 1-3', 'Любительский (многоголосный)', '1.31 ГБ','24 окт 2013', '26486'. А далее строка 2 с содержимым второго дива upload1 и так далее...
---------- Добавлено 25.10.2013 в 10:40 ----------
Добавьте флаг s
preg_match('/<div class="upload1">(.*)<div id=/Us', $file, $trunc);
Все равно пустой результат...
---------- Добавлено 25.10.2013 в 10:43 ----------
Думаю, никто не должен обидеться, если покажу источник, откуда хочу составлять анонсы: fast-torrent.ru/film/v-pole-zreniya.html
Хочу выводить верхние три строчки таблицы и так по паре десятков сериалов.
Далее в странице идут еще такие же блоки:
<div class="upload1">...</div>
Их может быть больше 10 штук, нужен первый, а лучше первые 3, встретившиеся на странице.
Массив хотел такой строка 1 => '9-й сезон/ 1-3', 'Любительский (многоголосный)', '1.31 ГБ','24 окт 2013', '26486'. А далее строка 2 с содержимым второго дива upload1 и так далее...
Тогда нужно два preg_match_all
Первый берёт нужные блоки. Потом через foreach перебором составлять уже массивы и опять же использовать preg_match_all
Самая большая проблема для меня написать работающий preg_match_all :)
Ну во первых вам нужно экранировать спецсимволы в своем регулярном выражении.
ВО вторых вам нужен тогда preg_match_all и кроме того, указать более точно, что парсить, а например...\<div class\=\"c9\"\>(.*)\<\/div\>... и т.д.
Так:
preg_match_all('/\<div class\=\"c9\"\>(.*)\<\/div\>/Us', $file, $episode);
var_dump($episode);
Результат: array(2) { [0]=> array(0) { } [1]=> array(0) { } }
Ничего не получается...
может луче заюзать simplehtmldom
require_once('simple_html_dom.php');
$str_html = file_get_contents("url");
$html = str_get_html($str_html);
$upload = array();
foreach($html->find('.upload1') as $element) {
$res = array();
$res[] = $element->find('.c9', 0)->innertext;
$res[] = $element->find('.c10', 0)->innertext;
$res[] = $element->find('.c3', 0)->innertext;
$res[] = $element->find('.c4', 0)->innertext;
$res[] = $element->find('.c5', 0)->innertext;
$upload[] = $res;
}
var_dump($upload);
?>
Ничего не получается...
Потому что в коде страницы классы не в двойных кавычках, а в одинарных.