[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсинг страницы: что можете посоветовать?
web-dev
Приветствую!! Нужна Ваша помощь.
Есть страница, в ней анекдоты. И есть другой сайт с админкой, в админке тоже есть раздел анекдоты. Заказчик хочет "автоматически" сохранять анекдоты с этой страницы.
Анекдоты разбиты по темам (темы выделены заголовками <h3>). Анекдот начинается с ****. Вот нужен Ваш совет как это сделать.
Я думаю что нужно записать весь html код в одну переменную и как то пытаться разбить это всё на маcсивы (explode, разделитель h3), а потом в этих элементах массивов ещё раз разбить уже по *****.
Я просто спрашиваю потому что никогда таких вещей не делал, может это как то по другому делается или я мыслю в нужном направлении? Спасибо.




Спустя 41 минута, 31 секунда (14.04.2010 - 13:57) Семён написал(а):
Нет, используй регулярные выражения.

Спустя 22 часа, 37 минут, 44 секунды (15.04.2010 - 12:34) web-dev написал(а):
Понятно. А что делать если в этой странице все буквы выводятся символами \46#1088;\46#1077; ... ?

Спустя 23 часа, 37 минут, 35 секунд (16.04.2010 - 12:12) web-dev написал(а):
Всё разобрался! Товарищи подскажите последнее!

Есть такая структура:
<h3>Заголовок1</h3>
Текст
<h3>Заголовок2</h3>
Текст

Как мне это в массив регуляркой запихать?
Мне надо чтоб в каждом элементе массивы было:
<h3>Заголовок X</h3>
Текст

Спустя 3 минуты, 36 секунд (16.04.2010 - 12:15) Семён написал(а):
Учись сам: вот пример:
<?php
preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
"<b>example: </b><div align=left>this is a test</div>",
$out, PREG_PATTERN_ORDER);
echo $out[0][0] . ", " . $out[0][1] . "\n";
echo $out[1][0] . ", " . $out[1][1] . "\n";
?>

Спустя 2 часа, 2 минуты, 48 секунд (16.04.2010 - 14:18) web-dev написал(а):
Текст

<h3>Группа 1</h3> Какой то текст принадлежащий группе 1
<h3>Группа 2</h3> Какой то текст принадлежащий группе 2
<h3>Группа 3</h3> Какой то текст принадлежащий группе 3
<h3>Группа 4</h3> Какой то текст принадлежащий группе 4

Вот я написал:

[^<\/h3>]*<h3>.*<\/h3>[^<h3>]*


Разбивает на массив:

<h3>Группа 1</h3> Какой то текст принадлежащий группе 1
<h3>Группа 2</h3> Какой то текст принадлежащий группе 2
<h3>Группа 3</h3> Какой то текст принадлежащий группе
<h3>Группа 4</h3> Какой то текст принадлежащий группе 4

Надо как то показать что после </h3> идёт текст ( .* ) а потом не должно быть открывающегося тега <h3> что если он есть это уже в новый элемент массива надо пихать, т.е. [^<h3>]* эта конструкция в конце не правильная, она воспринимается как список символов, а надо что бы строгая последовательность была именно <h3>, а то как я написал он там и <br> выкидывает, короче муть.

Проще говоря как в регулярке написать НЕ <h3>?

Спустя 1 день, 1 час, 28 минут, 19 секунд (17.04.2010 - 15:47) web-dev написал(а):
ph34r.gif

$val = str_replace('<h3>', '@@@<h3>', $val);
$val = $val . '@@@';
$res = preg_match_all("|(<h3>.*?</h3>.*?)@@@|i", $val, $mass, PREG_PATTERN_ORDER);

Спустя 2 часа, 22 минуты, 31 секунда (17.04.2010 - 18:09) moskitos80 написал(а):
Почитайте про опережающие и ретроспективные позиционные проверки.


_____________
IT - это такая область, что приходится постоянно бежать вперед, чтобы оставаться на месте.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.