Автор Тема: Парсинг телефонного номера  (Прочитано 10096 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн tarya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 370
  • +0/-0
  • 0
    • Просмотр профиля
Парсинг телефонного номера
« : 01 Апреля 2004, 19:39:01 »
Вопрос в том что телефонные номера бывают разные, в разные города и так далее.
Определить что междугородка легче всего первая стоит "8", а как далее? как определиться что следущии 3 цыфры это код, а может 4 последующие это год?

У меня есть все телефонные коды городов, но как теперь распарсить телефонные звонки и выбрать какой звонок был куда?

Если кто чтото подобное делал подскажите пожалуста.

Благодарствую
Рожденный с понимающим, и гордо поднятым кулаком! Свидетель разреза запястья — он с ним!

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Парсинг телефонного номера
« Ответ #1 : 01 Апреля 2004, 19:53:27 »
tarya В базе хранишь? Формат данных постоянный?
Мне тормоз послужил толчком...

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Парсинг телефонного номера
« Ответ #2 : 02 Апреля 2004, 06:32:42 »
Боюсь гневной реакции Ромика, но я бы сделал регулярками :)

Оффлайн tarya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 370
  • +0/-0
  • 0
    • Просмотр профиля
Парсинг телефонного номера
« Ответ #3 : 02 Апреля 2004, 10:03:04 »
Да я и сам сделаю это регулярными выражениями, просто думаю как быть, ведь келефонный код бывает не просто 3 или 4 цыфры, но всякие вариации, и телефонный сам номер без кода тоже бывает 7, 5, 6, даже 4 и 3 символа.

Коды городов есть, я их в базу занесу, просто чтоб неделать мартышкин труд изначально решил подумать как люди делают.

Все это я делаю для учета переговоров. АТС сыплет в лог все разговоры, я потом все это дело парсю и засовую в базу данных, а потом было бы неплохо именно все это подсчитать, стоимость переговоров там и все остальное. Все как бы чудно и несложно, непонятно мне как просто сверять номер что есть например "80626454567"  тут получается все так 8-06264-54567, на как быть если это вдруг 8-062-6454567 ведь и так свободно может быть.

Благодарствую тем кто помогает. Спасибо.
Рожденный с понимающим, и гордо поднятым кулаком! Свидетель разреза запястья — он с ним!

Оффлайн alezee

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 42
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Парсинг телефонного номера
« Ответ #4 : 02 Апреля 2004, 11:04:16 »
Написал такую прогу уже... Сейчас просто довожу до ума...
Считает не только МТС телефоны, но и IP-телефоны... Плюс разделение на дневной и ночной тариф...
Обошел проблему только простым обходов цикле...

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
Парсинг телефонного номера
« Ответ #5 : 02 Апреля 2004, 13:08:33 »
Цитировать
tarya:
ведь келефонный код бывает не просто 3 или 4 цыфры

надо иметь базу с кодами. - сначала обходить и разделять телефон на код (начиная с самых длинных естественно) и сам номер
ну, будем исповедоваться?

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Парсинг телефонного номера
« Ответ #6 : 02 Апреля 2004, 15:34:24 »
tarya Храни отдельно телефон и отдельно коды. В таблице телефонов заведи ссылку на IDшник кода города. И примитивным селектом это всё спокойно и красиво извлекается.
Мне тормоз послужил толчком...

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
Парсинг телефонного номера
« Ответ #7 : 02 Апреля 2004, 15:36:42 »
Neter это все замечательно за исключением тех случаев, когда ты на входе имеешь просто весь набранный номер (например взятый с АТСки)
ну, будем исповедоваться?

Оффлайн tarya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 370
  • +0/-0
  • 0
    • Просмотр профиля
Парсинг телефонного номера
« Ответ #8 : 02 Апреля 2004, 15:55:55 »
Цитировать
Neter:
Храни отдельно телефон и отдельно коды. В таблице телефонов заведи ссылку на IDшник кода города. И примитивным селектом это всё спокойно и красиво извлекается.


Вот это мы и запутались.

а я как храню? извлекается то чудесно когда номер с атс падает целиком набранным, но я о другом говорил.

А говорил я вот о чем - как узнать код города из телефонного?

Пример: номер 4565678 - ясное дело это городской. Почему мы это знаем? да потому что нету номера 8 впереди.
Пример 2: номер 80674565678 - показывает что номер негородской, набран через 8, и это мобильный 067, это тоже легко было бы понять но есть но - а вдруг код на самом деле не 067 а 0674 - тоесть код города а не мобильника? в этом случае номер абонента не 7 циферь (4565678) а всего 6 (565678) - такое тоже ведь расространено.

Так вот далее, номера сыплются с атс в таком формате 80674565678 - межгород, мобилки, и 4565678 городские.

Городской номер это легко, но как распарсить номер 80674565678?  чтоб правильно выбрать из него код города и так далее?.

Потому как кода города бывают:
067
0674
06745
и это все разные города и кода и потому цена на разговор разная.

Все кода городов я уже засунул в таблицу, теперь только научиться правлиьно вычеслять.

Спасибо.
Рожденный с понимающим, и гордо поднятым кулаком! Свидетель разреза запястья — он с ним!

Оффлайн tarya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 370
  • +0/-0
  • 0
    • Просмотр профиля
Парсинг телефонного номера
« Ответ #9 : 02 Апреля 2004, 16:03:53 »
Есть идея искать код в таблице так.

выбираем после 8 максимальное количество цыфр какое может быть в коде, сейчас максимум длина 5 циферь. Выбрали и сверяем в таблице кодов, если нету такого то правую удаляем и сверяем уже 4 цифери, если нету значит сверяем три цифры, а если нашлось то окей!

как такая мысль?
Рожденный с понимающим, и гордо поднятым кулаком! Свидетель разреза запястья — он с ним!

Оффлайн alezee

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 42
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Парсинг телефонного номера
« Ответ #10 : 07 Апреля 2004, 17:57:43 »
tarya

SELECT * FROM Таблица тарифов  ORDER BY LENGTH(Поле кода городов) DESC

Может я не прав, но этот запрос выбирает все записи из таблицы и сортирует выборку по по убыванию, начиная с записи, у которой количество символов в поле максимальное

Оффлайн tarya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 370
  • +0/-0
  • 0
    • Просмотр профиля
Парсинг телефонного номера
« Ответ #11 : 07 Апреля 2004, 18:30:56 »
Цитировать
alezee:
alezee
Завсегдатай[/quote



ты вообще непонял о чем дело.

Расказываю.

Есть АТС, с нее в файл сыплется статистика переговоров по телефонам.

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

Потом у меня есть таблица, тел кодов, в ней код и город и ссылка на область в третей табл. в ней написаны все области и их тарифы и так далее, мобильная связь и др. Вообще лучще для тарифов создять еще одну табл, бо тарифов много, на разное врямя суток свое.
Потом я хочу посмотреть статистику, простым запросом я прошу данные из лога- "дайте мне телефоны межгорода по 115 станции с такго времени до такого"  - или как хочешь вообще короче.
все это дело принимается и вычеслется код города, из него город и область, из области тариф, из расчитывается протяженность звонка с сек такак как в наличии (1:34) потом все это всчитается на тариф и на время звонка и все это готовится и куда? как вывести много строк? я их принял бы классом вывода, но он принимает как я разобрался только запрос СКЛ. Потому то и спрашиваю - как мне быть, но вероятнее всего засовывать все это дело в Временную таблицу нет смысла, потому как Рома сказал ездить в москву через африку нет нужды, правда несказал он как все таки поехать, или где купить правильный билет. это жаль
Рожденный с понимающим, и гордо поднятым кулаком! Свидетель разреза запястья — он с ним!

Оффлайн alezee

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 42
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Парсинг телефонного номера
« Ответ #12 : 07 Апреля 2004, 19:03:30 »
tarya
Я прекрасно понял, о чем идет разговор... Дело в том, то я уже писал такую прогу... ОНА РАБОТАЕТ РЕАЛЬНО... АТС не Panasonic и не ХайКом сименовский...Также по ком-порту снимаю данные и обрабатываю их... Только расчет стоимости производится до того, как данные попадут в основную таблицу... Причем производятся с учетом, был ли звонок через МТС или через IP-оператора, был ли звонок по дневному или ночному тарифу...
А вот потом, я уже оперирую данными как мне надо, хочу узнать по конкретному номеру, пожалуйста... И т.д.

Оффлайн alezee

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 42
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Парсинг телефонного номера
« Ответ #13 : 07 Апреля 2004, 19:15:24 »
Ты спрашивал, ка распарсить телефонный номер. Я привел пример запроса. Результат этого запроса, выборка отсортированная так, что те коды городов, имеющие максимальную длину, находятся в начале... В таком случае, у тебя не получится такого что, например:
  Код города Багульма 85514
  Код города Набережные челны 855
  Телефон №88551449264 принадлежит Набережным Челнам...

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Парсинг телефонного номера
« Ответ #14 : 08 Апреля 2004, 10:13:12 »
Мне интересно, а как городская АТС определяет куда ты звонишь, в Багульму или Набережные челны?
Мне тормоз послужил толчком...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28