powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Разбор текста
7 сообщений из 7, страница 1 из 1
[PHP] Разбор текста
    #37754837
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошу не пинать - первая прога на пхп
тренируюсь пока на кошках

Есть файл/отчет от сотового оператора.
Внутри - отчет по каждому номеру:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Контракт № 999999        Номер телефону: 999999999       
Ц_новий Пакет:     GSM 'Б_знес Оптимальний-2'
ВАРТ_СТЬ ПАКЕТА/ЩОМ_СЯЧНА ПЛАТА . . . . . . . . .       0.00      1.11      2.22
ПОСЛУГИ, НАДАН_ ЗА МЕЖАМИ ПАКЕТА  . . . . . . . . . . . . . . . . . .       9.99
Вих_дн_ дзв_нки по Україн_: . . . . . . . . . . . . . . . . . . . . .      99.99
Вих_дн_ дзв_нки абонентам _нших моб_льних оператор_в: . . . . . . . .     999.99
Вих_дн_ дзв_нки абонентам МТС та МТС Передоплата: . . . . . . . . . .    9999.99

хочу разобрать в приемлемый для дальнейшей обработки вид

придумал что-то вроде шаблона:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<new_contract>Контракт № <contract_number>       Номер телефону: <phone_number>       
Ц_новий Пакет:     <price_package>
<new_row>ВАРТ_СТЬ ПАКЕТА/ЩОМ_СЯЧНА ПЛАТА . . . . . . . . .       <n1>      <n2>      <n3>
<new_row>ПОСЛУГИ, НАДАН_ ЗА МЕЖАМИ ПАКЕТА  . . . . . . . . . . . . . . . . . .       <n3>
<new_row>Вих_дн_ дзв_нки по Україн_: . . . . . . . . . . . . . . . . . . . . .       <n3>
<new_row>Вих_дн_ дзв_нки абонентам _нших моб_льних оператор_в: . . . . . . . .       <n3>
<new_row>Вих_дн_ дзв_нки абонентам МТС та МТС Передоплата: . . . . . . . . . .       <n3>

файл из инета получил
шаблон в проге прочитал

Но вот куда дальше - не знаю.
Т.е. обычными substr'ами + куча проверок на подстроки - могу сделать.
Но хочется чего-то красивого. Как-нить с помощью средств php сопоставить числа 0.00, 1.11 и 2.22 с переменными n1, n2 и n3.
...
Рейтинг: 0 / 0
[PHP] Разбор текста
    #37754853
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
preg_match_all('#ВАРТ_СТЬ ПАКЕТА/ЩОМ_СЯЧНА ПЛАТА . . . . . . . . .       (.*)      (.*)      (.*)#isU')
...
Рейтинг: 0 / 0
[PHP] Разбор текста
    #37755036
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_http://phpclub.ru/detail/article/regexp_1
...
Рейтинг: 0 / 0
[PHP] Разбор текста
    #37755084
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett_http://phpclub.ru/detail/article/regexp_1спасибо, буду читать

а то крыша едет :))
вывожу с помощью следующего кода (посмотреть):
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        echo "<br/>";
        echo "<br/>";
        echo count($out) . "<br/>";
        for ($i = 0; $i < count($out); $i++)
        {
          echo $i . ' = ' . $out[$i] . ', count = ' . count($out[$i]) . "<br/>";
          for ($j = 0; $j < count($out[$i]); $j++)
          {
                echo '>' . $j . ' = ' .
                iconv('Windows-1251', 'UTF-8', $out[$i][$j])
                 . "<br/>";
          }
        };



здесь вроде нормально:
Код: php
1.
2.
3.
        preg_match_all('#ВАРТ_СТЬ ПАКЕТА/ЩОМ_СЯЧНА ПЛАТА . . . . . . . . .      (.*)     (.*)     (.*)#',
                        'ВАРТ_СТЬ ПАКЕТА/ЩОМ_СЯЧНА ПЛАТА . . . . . . . . .      1.11     2.22     3.33    ',
                       $out, PREG_PATTERN_ORDER);

результат:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
4
0 = Array, count = 1
>0 = ВАРТ_СТЬ ПАКЕТА/ЩОМ_СЯЧНА ПЛАТА . . . . . . . . . 1.11 2.22 3.33
1 = Array, count = 1
>0 = 1.11
2 = Array, count = 1
>0 = 2.22
3 = Array, count = 1
>0 = 3.33
1


а здесь фигня:
Код: php
1.
2.
3.
        preg_match_all('#Щом_сячна плата  _нш_ серв_си   . . . . . . . .        (.*)     (.*)     (.*)#',
                        'Щом_сячна плата  _нш_ серв_си   . . . . . . . .        1.23     4.56     7.89        ',
                       $out, PREG_PATTERN_ORDER);

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
4
0 = Array, count = 1
>0 = Щом_сячна плата _нш_ серв_си . . . . . . . . 1.23 4.56 7.89
1 = Array, count = 1
>0 = 1.23 4.56
2 = Array, count = 1
>0 = 7.89
3 = Array, count = 1
>0 =
1
первое и второе число считает одной строкой
...
Рейтинг: 0 / 0
[PHP] Разбор текста
    #37755146
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
4.
5.
preg_match_all('#Щом_сячна плата  _нш_ серв_си[.\s]+([\d.]+)\s+([\d.]+)\s+([\d.]+)#u',
    'Щом_сячна плата  _нш_ серв_си   . . . . . . . .        1.23     4.56     7.89',
    $out);

var_dump($out);
...
Рейтинг: 0 / 0
[PHP] Разбор текста
    #37755164
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

спасибо!
что-то такое вырисовалось:
Код: php
1.
2.
3.
preg_match_all(iconv('Windows-1251', 'UTF-8', '#Щом_сячна плата _нш_ серв_си[.\s]+([\d.]+)\s+([\d.]+)\s+([\d.]+)#'),
               iconv('Windows-1251', 'UTF-8',  'Щом_сячна плата _нш_ серв_си  . . . . . . . .        1.23     4.56     7.89  '),
               $out, PREG_PATTERN_ORDER);



Код: plaintext
1.
array(4) { [0]=> array(1) { [0]=> string(96) "Щом_сячна плата _нш_ серв_си . . . . . . . . 1.23 4.56 7.89" } [1]=> array(1) { [0]=> string(4) "1.23" } [2]=> array(1) { [0]=> string(4) "4.56" } [3]=> array(1) { [0]=> string(4) "7.89" } }

версия пхп - 5.1.6
...
Рейтинг: 0 / 0
[PHP] Разбор текста
    #37755652
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Разбор текста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]