Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вложенность div и регулярные выражения 
:(
    Опции темы
Lexxx_HU
Дата 23.5.2010, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 17.10.2006

Репутация: нет
Всего: нет



Здравствуйте все уважаемы форумчане, обрисую суть проблемы

Парсю некоторый html текст и пытаюсь найти все элементы div
для этото пользуюсь двумя регулярными выражениями и  заполняю массив
Код

div_array[] = то что находится в div

первое находит div если есть какие то дополнительные свойства класс, айд и т.д.
второе находит если <div> без всякого мусора
Код

$this->find_tag("'<\s*div[^>]*?[^/]>(?!<div)(.*?)<\s*/\s*div\s*>'is");
$this->find_tag("'<\s*div\s*>(?!<div)(.*?)<\s*/\s*div\s*>'is");

если текст состоит из последовательно расположенных div то все проходит нормально, на выходе имеем массив из четырех элементов
Код

<div class="class1">Текст 1</div>
<div>Текст 2</div>
<div class="class3">Текст 3</div>
<div>Текст 4</div>

а вот если имеется вложенноcть div то регулярки находят только внутрениие, что в принципе и должно быть
Код

<div class="big1">
    <div class="class1">Текст 1</div>
    <div>Текст 2</div>
</div>
<div class="big2">
    <div class="class3">Текст 3</div>
    <div>Текст 4</div>
</div>

ВОПРОС в следующем - как сделать так чтобы можно было находить и родительские div, то есть на выходе должен быть массив из 6 элементов, (очередность не имеет значения) и можно ли как нибудь обойтись одним регулярным выражением
Код

[0] => Текст 1
[1] => Текст 2
[2] => Текст 3
[3] => Текст 4
[4] => <div class="class1">Текст 1</div><div>Текст 2</div>
[5] => <div class="class3">Текст 3</div><div>Текст 4</div>


Это сообщение отредактировал(а) Lexxx_HU - 23.5.2010, 11:02
PM MAIL   Вверх
NewDima
Дата 23.5.2010, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



Для этой задачи создан xsl. В случае чистого php ИМХО без dom  не обойтись
PM ICQ   Вверх
Lexxx_HU
Дата 23.5.2010, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 17.10.2006

Репутация: нет
Всего: нет



в сторону DOM уже смотрю второй день, разбираюсь.

тогда такой вопрос можно ли как нибудь средствами php узнать родителя у элемента ? и можно ли те 2 мои регулярки в одну объединить ? 
PM MAIL   Вверх
NewDima
Дата 23.5.2010, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



Зачем объединять это? Оно вам вообще не нужно
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0446 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.