Есть страница, в ней анекдоты. И есть другой сайт с админкой, в админке тоже есть раздел анекдоты. Заказчик хочет "автоматически" сохранять анекдоты с этой страницы.
Анекдоты разбиты по темам (темы выделены заголовками <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>?
<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 написал(а):

$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 - это такая область, что приходится постоянно бежать вперед, чтобы оставаться на месте.