Регулярка

KapriS

Новичок
Помогите пжалста. строка типа
HTML:
<dl> <dt>Адрес отправителя</dt> <dd>ИРа </dd> <dt>Текст отзыва</dt> <dd>Тест</dd> </dl>
необходимо элементы между тэгам dd вырезать в массив для дальнейшей обработки.
пробовала
PHP:
if (preg_match('|<dd.*?>(.*)</dd>|sei', $item->content, $arr)) $title = $arr[1];
  else $title='';
так в этом случае в $title помещается элемент от первого dd до последнего /dd. а мне нужно, чтобы получился массив из двух элементов. {ИРа,Тест}
 

Pez!

Я твой сайт похапе писал
да не любят здесь тех, кто парсит чужой контент ...
 

KapriS

Новичок
да не любят здесь тех, кто парсит чужой контент ...
это вы про те полторы строки с регуляркой, которые размножены по инету. типа права чьи то нарушила, не указав ссылку?
лучше бы подсказали, раз такой начитанный, хотя думаю, что после этого сообщения вряд ли ваше самолюбие позволит мне помогать в дальнейшем.
ЗЫ: это ваше творение я посмела изъять с просторов инета?
 

Фанат

oncle terrible
Команда форума
речь не о регулярке, а тексте, который нужно парсить
 

KapriS

Новичок
вот чтобы вас понять с моими чистыми побуждениями, мне пришлось сотрудника попросить расшифровать - о чем вы тут. Итак, теперь по делу: при формировании заказа на сайтах наших клиентов - информация собирается в виде представленной структуры в одном поле. а теперь мне это поле надо разбить на куски, чтобы красиво вывести на страницу. и вывести нужно только то что в dd.
Теперь смею ожидать отв ас помощи в составлении правильного выражения?
 

Фанат

oncle terrible
Команда форума
в первую очередь возникает вопрос - А ЗАЧЕМ информация собирается в такую структуру, которую потом приходится парсить руками, вместо того, чтобы СРАЗУ отправить в машино-читаемом виде - например, JSON?

я, конечно извиняюсь, что все эти вопросы кажутся издевательством.
они им не являются.

просто сама постановка задачи кажется издевательством над здравым смыслом. и обычно всё решается куда проще. любой программист всегда хочет сделать проще. это правило распространяется и на ответы на форуме.
так же любой программист хочет делать осмысленные вещи. это правило распространяется и на ответы на форуме.

стоит рассматривать наши вопросы-ответы с этой точки зрения. (и соответствующим образом формулировать вопрос)
 

Yaponchick

Новичок
XXI век, а люди парсят хтмл с помощью PCRE, вам phpQuery / nokogiri мало?
 
  • Like
Реакции: AmdY

KapriS

Новичок
в первую очередь возникает вопрос - А ЗАЧЕМ информация собирается в такую структуру, которую потом приходится парсить руками, вместо того, чтобы СРАЗУ отправить в машино-читаемом виде - например, JSON?

я, конечно извиняюсь, что все эти вопросы кажутся издевательством.
они им не являются.
Сайты работают на СМС нашей компании, динозавры-разработчики, давно канули в лету, менять стабильные релизы строго настрого запрещено, а формат записи заложен в ядре. Шоб его менять - надо менять ядро, что правилами компании категорически запрещено. Так что меняю скорлупу и работаю с тем кодом, который был создан до меня и не мне менять правила целой организации. Поэтому, если есть возможность, просто ответьте на вопрос - как правильно составить выражение, чтобы можно было вырезать куски из тэгов в массив.
 

С.

Продвинутый новичок
менять ядро, что правилами компании категорически запрещено.
Понятная принципиальная позиция. На этом форуме есть такая же -- категорически запрещено обсуждать любой парсинг.
при формировании заказа на сайтах наших клиентов - информация собирается в виде представленной структуры в одном поле. а теперь мне это поле надо разбить на куски, чтобы красиво вывести на страницу
Если это старые наработки, то они же не просто сохранялись в базу так просто на память. Где-то же это выводилось и явно не в этом сыром виде. Найдите кусок кода, где это парсится и используйте его.
Если это новые данные, то сохраняйте их как положено, чтобы парсить не было необходимости.
 

KapriS

Новичок
категорически запрещено обсуждать любой парсинг.
С этого и надо было начинать, а не возить вилкой по воде. Два дня потрачено на обсуждение таВо, не знаю чаВо.
ЗЫ: по поводу того, что делать со старыми наработками я в этом топе не спрашивала, посему ваши приписки лишние.
Всем спасибо за беспокойное участие в жизни сайтов нашей компании.
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Собственно, eax уже ответил на самый первый вопрос
 

KapriS

Новичок
безусловно, моя главная проблема в том, что я барышня. и мне нестыдно признаться, что я много не знаю. знала бы - не спрашивала. а умным казаться, не произнеся ни одного умного слова - это ваша, мужская привилегия, правда, С?.
 

С.

Продвинутый новичок
Вы нарушили сразу три главных завета этого форума:

1. Не парси!
2. Не говнокодь!
3. Не оправдывай говнокод злым начальством!

И при этом вас не только не побили камнями, но даже оставили вам вашу женскую привелегию быть немного истеричной. Так чтто заходите еще, спрашивайте, но с оглядкой на заветы.
 

KapriS

Новичок
ну и чтобы считать тему окончательно закрытой, приведу сюда уже рабочий кусок - добывающий массив из тэгов.
PHP:
 preg_match_all('|<dd.*?>(.*?)</dd>|sei'
И как вы можете заметить, уважаемый, Продвинутый новичок С., функция от первоначальной отличается не только .*?, но исЧе одним чудесным свойством: не ту функцию я использовала изначально. Теперь и вы стали чуточку умнее. Спасибо, можете сказать Alho, который помог нам это узнать.
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
но исЧе одним чудесным свойством: не ту функцию я использовала изначально. Теперь и вы стали чуточку умнее.
круто
 
Сверху