поиск телефонного номера среди текста

Resident

Новичок
дан текст 10-120 символов, среди него может быть телефонный номер, вот его надо и выдернуть оттуда
подскажите функции, алгоритм как это реализовать!
 

antson

Новичок
Партнер клуба
Resident
С какой целью поиск делаешь ?
Если для антиспама, то например номер может быть введен
четыре 9 пять - I з б - 27 8

а в остальных случаях есть устоявшиеся формы записи (маски)
 

Активист

Активист
Команда форума
офф:
- антиспам на PHP феерично :)))
- в связи с тем, что недавно глубоко изучил новое в работе почтовых систем выпилил с серверов все ресурсоемкие прибамбасы (спамассасин и т.п.), лучшая защита от антиспама:
а. Проверяем наличие SPF, если нет - можно выпиливать в /dev/null можно пропускать, в случае ошибочной проверки - differ (tempory reject)
б. Проверяем наличие PTR - отсутствует или не совпадает - в /dev/null
с. Проверяем DKIM, если нет - пропускаем, если ошибка - differ (tempory reject)

99% - спама остается у отправителя ))

А по сабжду - скорее всего собираются базы как раз для спама))
 

antson

Новичок
Партнер клуба
Активист
Я имел в виду антиспам в гостевых / комментариях на сайте и т.п.

Из фразы "дан текст 10-120 символов" я и предположил, что это поле формы на сайте, ну а дальше по ассоциации фильтрация ввода злобных юзверей
 

Resident

Новичок
да, почти, Смс чат, что бы чужой телефонный номер не указывали
сделал так: preg_match("/[7|8]?[-|(|)|\s]?[9][-|(|)|\s]?\d{1}[-|(|)|\s]?\d{1}[-|(|)|\s]?\d{1}[-|(|)|\s]?\d{1}[-|(|)|\s]?\d{1}[-|(|)|\s]?\d{1}[-|(|)|\s]?\d{1}[-|(|)|\s]?\d{1}[-|)|(|\s]?\d{1}/x", $text, $phones) если есть другие варианты, прошу =)
 

antson

Новичок
Партнер клуба
1) как пример ввода левого номера 90з 12з 45678 . только з в верхнем регистре и я не ввожу первую цифру
2) в регулярку заложен только DEF диапазон номеров, ABC не опознает. т.е. 8-495-123-45-67 не опознает
3) 7910_1234567 ?
4) 7/910/1234567 и сравни н-р 27 180/90/60/90
попутно, если человек введет свой номер вместе с другим, модерацию пройдет ?

так что в твоем случае простой регуляркой не обойтись
 

Resident

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

antson

Новичок
Партнер клуба
Resident
Если делать капитально , то нужно писать свой разбор строки на автоматах мили или мура. Аналог искуственного интелекта .
 
Сверху