erergi выражения

sergey24

Новичок
erergi выражения

Надо выявить все возможные варианты написания телефона

Я написал так:

PHP:
$t=' (351) 150 - 29 88
(351) 1502988
(351)150 29 88
351 1502988
и т.д.
'; 

  if(eregi("/[0-9 -:]{5,}\$",$t))  {          echo 'yes';  }  else  {          echo 'no';  }
Но что то не работает оно как положено.
Подскажите что не так?
 

freeek

Новичок
PHP:
$t = ' (351) 150 - 29 88   
(351) 1502988   
(351)150 29 88   
351 1502988   
и т.д.   ';    

preg_match_all('%\(?\d+\)?\D*\d{3}\D*\d{2}\D*\d{2}%isU', $t, $m);    

echo '<pre>';    
print_r($m);    
echo '</pre>';
так пойдет?

не знаю, как узнать что это именно номер телефона?
если посчитать что есть код города, а сам телефон семизначный, то что то в этом примитивном духе

не уверен что везде будет работать коректно, если нарушить хронолигию цифр

-~{}~ 23.11.09 17:24:

может кому то захочется написать

(351)15 777 15
или
(351)6969 300

и в таком духе

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

sergey24

Новичок
самое элементарно что пришло на ум

$t='(351) 150 - 29 88
(351) 150 2988
(351)150 29 88
351 150 298 8
&#232; &#242;.&#228;. (351) 150 - 29 88';
$r= preg_replace("/[^a-z&#179;&#191;&#184;&#224;-&#255;0-9 ]/"," ",$t);
$t = str_replace (' ','', $r );
echo $t;
if(eregi("([0-9]{5})",$t))
{
echo 'yes';
}
else
{
echo 'no';
}
 

freeek

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

Духовность™

Продвинутый новичок
давай начнем с того, в каком виде исходный текст?
+1

если автор хочет написать регу для любых типов телефонов в его стране, то скорее всего это утопия. достаточно посмотреть в википедии форматы региональных номеров, что бы понять, что сделать универсальную регулярку под номер телефона любого типа - утопия. По меньшей мере в России.
 

yok

Новичок
Вот недавно делал

preg_match("/^\d(?:(?:)?(?:\s)?){0,2}(?:(?:\()?(?:\d){3,4}(?:\))?)*(?:(?:)?(?:\s)?){0,2}\d(?:(?:)?\s*\d){3,5}\d$/",$tl)
это для таких 8 932 2233333 3333333 333 33 33 и с черточкой. и со скобками 8(433)3233333 и для региональных 8(3333)3333333
Вобщем проверь что да как.

-~{}~ 24.11.09 10:10:

Да где мордочка , это форум замещает двоеточие и открывающая скобка.

-~{}~ 24.11.09 10:15:

Совет, есть книга Jeff Friedl , в нете можно скачать, по регулярным. Класная. Прийдется повозиться, но зато будешь уметь. Это как печатать вслепую 10ю пальцами, пока не умеешь, не понимаешь что это такое.
 
Сверху