Вопрос по регулярке

GutsOut

Новичок
Здравствуйте. Имеем текст след. вида:

Н.А. Дубинский
Уплата утилизационного сбора при ввозе автомобилей в Республику Беларусь. Часть 1
В статье описан порядок и особенности уплаты утилизационного сбора при ввозе автомобилей на территорию Республики Беларусь.
В.Н. Лемеш
Порядок действий в связи с отменой в 2014 году амортизационной премии
В материале описан порядок и особенности бухгалтерского учета объектов, по которым на счетах бухгалтерского учета за период действия льготы по амортизационной премии были произведены соответствующие записи на счетах бухгалтерского учета.
Е.А. Авчинникова
Учет процентов по кредитам
Несмотря на кажущуюся простоту, учет процентов по кредитам до сих пор вызывает массу вопросов, особенно в части налогового учета. Автором рассмотрены особенности и проблемные моменты учета процентов по кредитам и займам.
И.Е. Демидович
Начисление пособий по временной нетрудоспособности работникам резидентов Парка высоких технологий
В статье описаны особенности расчета и начисления пособий по временной нетрудоспособности работникам резидентов Парка высоких технологий, а также приведен ряд практических ситуаций.
Л.И. Пиянзина
Расчет численности работников для целей применения особых режимов налогообложения
В материале в примерах описана методика расчета численности работников для целей применения особых режимов налогообложения.

Задача такая - распихать статьи по массиву т.е.:
[0] => 'Н.А. Дубинский
Уплата утилизационного сбора при ввозе автомобилей в Республику Беларусь. Часть 1
В статье описан порядок и особенности уплаты утилизационного сбора при ввозе автомобилей на территорию Республики Беларусь.'
...
[4] => 'Л.И. Пиянзина
Расчет численности работников для целей применения особых режимов налогообложения
В материале в примерах описана методика расчета численности работников для целей применения особых режимов налогообложения.'

Что надо добавить/изменить в моей регулярке
PHP:
"#[А-Я]\.[А-Я]\.\s*[А-Я][а-я]+\s*(.+)[А-Я]\.[А-Я]\.\s*[А-Я][а-я]*#s"
чтобы сохранялся текст до первой попавшейся фамилии?
 

riff

Новичок
Первый ответ не получился.
PHP:
if ($out = preg_split('~([А-Я]\.[А-Я]\.\s*[А-Я][а-я]+)~u', $text, -1, PREG_SPLIT_DELIM_CAPTURE)) {
    print_r($out);
}
 

GutsOut

Новичок
Получился вот такой массив:
[0]=>'Н.А. Дубинский'
[1]=>'Уплата утилизационного сбора при ввозе автомобилей в Республику Беларусь. Часть 1
В статье описан порядок и особенности уплаты утилизационного сбора при ввозе автомобилей на территорию Республики Беларусь.'
[2]=>'В.Н. Лемеш'
...
Не совсем то что ожидалось, но все равно большое спасибо)
 

riff

Новичок
Получился вот такой массив:
[0]=>'Н.А. Дубинский'
[1]=>'Уплата ...'
[2]=>'В.Н. Лемеш'
Только обрати внимание, может получиться и так:
[0] => ''
[1]=>'Н.А. Дубинский'
[2]=>'Уплата ...'
[3]=>'В.Н. Лемеш'

По-идее, должно было получиться с пустым [0], почему у тебя с нуля начинается, не понимаю.
 

dmyakov

Новичок
Попробуйте следующее выражение:
/([А-Я]\.[А-Я]\.\s.+?(?=(([А-Я]\.[А-Я]\.)|$)))/s
 

GutsOut

Новичок
Подскажите, пожалуйста, на счет такого текста(ниже). Задача аналогичная - распихать статьи по массиву. Как я понимаю тут мы должны отталкиваться от ссылки: т.е.
1.Находим ссылку
2.Захватываем предыдущую строку(заголовок)
3.Ищем следующую ссылку(ссылка следующей статьи)
4.Исключаем ее и предыдущую строку(заголовок следующей статьи)

Подскажите, пожалуйста, как это реализовать или другую идею.

Собственно, сам текст:
О тарифах на услуги транспортных терминалов
https://url/library/text/id/50232111
Постановлением установлены предельные максимальные тарифы на услуги транспортных железнодорожных и автомобильных терминалов.
Утверждена Инструкция о порядке установления и применения тарифов на услуги транспортных железнодорожных и автомобильных терминалов, действие которой распространяется на все юридические лица и индивидуальных предпринимателей, занимающихся предоставлением услуг на территории Республики Беларусь (далее — субъекты предпринимательской деятельности).
Инструкцией установлено, что:
• субъекты предпринимательской деятельности устанавливают тарифы на услуги, которые не должны превышать установленные предельные максимальные тарифы...
О некоторых вопросах развития единого расчетного и информационного пространства в Республике Беларусь
https://url/library/text/id/2111675
В соответствии с Постановлением республиканское унитарное предприятие почтовой связи «Белпочта» определено платежным агентом единого расчетного и информационного пространства.
О порядке выплаты в 2014 году надбавок за реализованную сельскохозяйственную продукцию
https://url/library/text/id/52342121
Во исполнение п. 2 и на основании подп. 1.3 постановления Совета Министров Республики Беларусь от 22 января 2014 г. № 53 «О надбавках за реализованную сельскохозяйственную продукцию» Брестский областной исполнительный комитет решил установить, что в 2014 году надбавки из средств областного бюджета за реализованную сельскохозяйственную продукцию выплачиваются в соответствии с п. 1 постановления Совета Министров Республики Беларусь от 22 января 2014 г. № 53 «О надбавках за реализованную сельскохозяйственную продукцию» сельскохозяйственным организациям, в т.ч. крестьянским (фермерским) хозяйствам, а также организациям, осуществляющим предпринимательскую деятельность по производству (выращиванию, разведению) сельскохозяйственной продукции, льнозаводам, выплата надбавок за реализованную сельскохозяйственную продукцию производится в пределах средств, предусмотренных в областном бюджете.
 

GutsOut

Новичок
По сути мне бы только подсказку: как взять строго предыдущую строку, после того как мы нашли #https:.+?\n(.+?)https:\/\/#s
 

riff

Новичок
Мой вариант разделения такой:
Код:
'~.+[\n\r]+https://.+[\n\r]+~'
upd: поправлено, а то парсер съел символы
 

GutsOut

Новичок
Мой вариант разделения такой:
Код:
'~.+[\n\r]+https://.+[\n\r]+~'
upd: поправлено, а то парсер съел символы
Спасибо, с захватом предыдущей строки работает, но для запоминания последующего текста придется включить модификатор s и тогда ваша регулярка сломается
 

riff

Новичок
Спасибо, с захватом предыдущей строки работает, но для запоминания последующего текста придется включить модификатор s и тогда ваша регулярка сломается
Всё разжёвывать надо.
Код:
if ($out = preg_split('~(.+)[\n\r]+(https://.+)[\n\r]+~', $text, -1, PREG_SPLIT_DELIM_CAPTURE)) {
    print_r($out);
}
 

GutsOut

Новичок
Опять же не совсем то, что ожидалось, но все равно спасибо)
 
Сверху