Парсинг мыла (банковской выписки).

KirillE

Guest
Парсинг мыла (банковской выписки).

Есть выписки из банка, которые приходят по мылу.
Задача такая: проанализировать html-таблицу на предмет расчетного счета и кодабанка. Потом спросить у локальной БД, кому пренадлежит этот счет, и подставить имя партнера в эту таблицу. Потом отослать юзерам.

часть выписки (html-вложение в мыле)

<TR align=left bgColor=#ececec>
<TD align=middle>1</TD>
<TD align=right>151501213</TD>
<TD align=middle>3012130330002</TD>
<TD align=center>110</TD>
<TD align=right>&nbsp;</TD>
<TD align=right>194181</TD>
<TD align=right>&nbsp;</TD>
</TR>

Прмечание: 151501213 - код банка, 3012130330002 - расчетный счет.
 

sage

Новичок
подумай, как скрипт сможет распознать, что 151501213 - код банка, а 3012130330002 - расчетный счет. А может 1 - код банка, а 110 - расчетный счет? Чтобы распознать, должны быть какие-то признаки. Они есть?
 

Serguitar

Новичок->продвинутый
KirillE
Тебе выписки присылают ведь не ввиде хтмл таблицы? Откуда она берётся? Да ещё в таком безобразном виде, что не понять где что. Ты разберись с порядком страницы, а потом уже и проблем, имхо, с записью в базе и рассылкой не останется.
 

KirillE

Guest
Мне надо разобрать такие блоки кода (как я написал выше). Их может быть n. По сути мне надо анализировать
<TD align=right>151501213</TD>
<TD align=middle>3012130330002</TD>
т.е. <TD align=right> 9 цифр </TD>
и
<TD align=middle> 13 цифр </TD>

и заменить этот код на
<TD align=right>151501213</TD>
<TD align=middle>3012130330002</TD>
<TD align=middle>Рога и копыта</TD>

естественно, спросив у БД.

-~{}~ 16.06.05 15:38:

Письмо с выпиской приходит в виде приложения к письму файл html.
 

sage

Новичок
KirillE
ну и всё. в чём может быть проблема? ты уже нашел те признаки, по которым необходимые тебе данные отличаются от всех остальных. Код банка - 9 цифр и выравнивание по right, у расчётного счёта - 13 цифр и align=middle. Затем эти строчки заменяй на те же самые + <TD align=middle>имя партнёра</TD>
 

Serguitar

Новичок->продвинутый
sage
Элементарно! Особенно если н строк. И вдруг случайно что-то совпало? Нет. Банкиры люди умные, тут должен быть признак однозначного разделения.
 

KirillE

Guest
Там в принципе ничего другого совпасть не может. Подскажите, хоть в каком направлении рыть?

-~{}~ 16.06.05 16:15:

Хоть схему предложите.
 

Serguitar

Новичок->продвинутый
KirillE
Если ничего совпасть не может, то тебе всё сказали.
 

alexhemp

Новичок
KirillE

Тебе нужно проанализировать текст.
самый простой путь preg_match_all

Посложнее - DOM.
 

yugene

Отошел от дел
применяй strip_tags. после него у тебя останутся строки длиной 9 для БИКа и 13 - для расчетного счета (обычно, правда, расчетный счет состоит из 20 символов; 13 - это какой-нибудь ОГРН)
 

alexhemp

Новичок
yugene

Ему еще нужно вырезать блок из HTML для этого. И нет гарантий что между <TR> есть \n
 

yugene

Отошел от дел
Автор оригинала: alexhemp
Ему еще нужно вырезать блок из HTML для этого.
Зачем? Пока автор об этом не говорил :) Он же, вроде, текст без изменений оставляет, просто приписывает к нему дополнение...

Автор оригинала: alexhemp
И нет гарантий что между <TR> есть \n
Ну, тогда будет одна строка из 22 (=13+9) символов. Применять substr 2 раза :)

По-любому, эта задача не стоит такого длинного обсуждения :)
 

tony2001

TeaM PHPClub
Очень сложный "теоретический" вопрос обработки определенного текста никак не умещается в формат форума "Для теоретических вопросов".
Пожалуйста думайте головой перед тем, как постить свой топик, и выбирайте соотв-щий раздел.
 

KirillE

Guest
Я хотел просто улышать (увидеть):
1) получаешь почту с сервера так-то
2) вынимаешь html-приложение
3) анализируешь его примерно так-то
4) обращаешься к БД, заменяешь код
5) отправляешь юзеру

Мне хотя бы схему, как это делать.
 

sage

Новичок
какую схему? тебе уже всё разжевали. или ты хочешь, чтоб мы тебе ещё и скрипт написали?
 

yugene

Отошел от дел
Автор оригинала: KirillE
Я хотел просто улышать (увидеть):
1) получаешь почту с сервера так-то
2) вынимаешь html-приложение
3) анализируешь его примерно так-то
4) обращаешься к БД, заменяешь код
5) отправляешь юзеру

Мне хотя бы схему, как это делать.
Схему ты уже сам привел :) Что конкретно не понятно?
 
Сверху