26.03.2011, 18:15 | #1 |
Вредина
Регистрация: 03.07.2007
Адрес: д.Коноплянка
Сообщений: 3,535
Вес репутации: 437
|
Накидайте plz регэксп
Коллеги, имеем файлик который кинули в строку $str, в нем такая структура:
<h4>Name 1</h4> Text 1 </h4>Name 2</h4> Text 2 <h4>Name 3</h4> Text 3 Нужно переложить $str в массивы $name[] и $text[] соответственно, выдайте пожалуйста идею грамотного regexp, с учетом что последний Text 3 не имеет ограничения новым тегом <h4>Name 4</h4> Заранее спасибо!
__________________
|
26.03.2011, 19:12 | #2 |
Эксперт
Регистрация: 12.12.2009
Адрес: Ростов-на-Дону
Сообщений: 1,537
Вес репутации: 248
|
Если файлик прям именно такой как вы показали - я бы не стал заморачиваться с регэкспами.
$strings=file('ваш файл'); чётный строки - это ваши name (после strip_tags) нечётные - это text
__________________
Самый удобный Хостинг (в т.ч. сейчас - бесплатное полугодовое тестирование хостинга Node.JS) |
26.03.2011, 19:44 | #3 |
Вредина
Регистрация: 03.07.2007
Адрес: д.Коноплянка
Сообщений: 3,535
Вес репутации: 437
|
Не не такой, я просто структуру показал, пока на ум пришло только такое:
PHP код:
Добавлено через 11 минут Ну вот, получило не супер пупер производительно, да лучшее на ум не пришло. PHP код:
__________________
Последний раз редактировалось Jooz; 26.03.2011 в 19:45. Причина: Добавлено сообщение |
26.03.2011, 20:12 | #4 |
Пожиратель черепашкоВ
Регистрация: 24.12.2008
Адрес: Телемелетрямдия
Сообщений: 4,739
Вес репутации: 400
|
Возможно я не прав, но мне кажется, что тут массив $text будет содержать текст с именами вместе
__________________
|
26.03.2011, 20:21 | #5 |
Вредина
Регистрация: 03.07.2007
Адрес: д.Коноплянка
Сообщений: 3,535
Вес репутации: 437
|
chahlic, да прав, но так и надо. $neme - улетит в титлы, а все остальное в боди. Именно по этому и <h4> который является сплитером, я восстанавливаю.
PHP код:
__________________
|
26.03.2011, 21:31 | #6 |
Хитрый жук
Регистрация: 05.12.2007
Адрес: Конаково
Сообщений: 2,987
Вес репутации: 394
|
В два прогона
1) // добавляем разметку для парсинга $html = preg_replace("|<h(\d+)|Uis", "###<h$1", $html); 2) // парсим с учетом этой доп. разметки preg_match_all("|<h(\d+)(.*)>s*(.*)\s*<\/h\d+>(.*)\s*###|Uis", $html, $out, PREG_PATTERN_ORDER); На выходе получаем массив с уровнями заголовков (\d+), заголовками и собссно текстами.
__________________
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Люди, накидайте плиз партнерки | Jimi Dini | Партнерские программы, баннерная реклама | 9 | 21.12.2008 23:52 |
Часовой пояс GMT +3, время: 05:44.