- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
С одной стороны хочу поделится свой наработкой:
preg_match_all("/[0-9 \(\)\-\+]{2,16}[0-9\- ]{2,}[0-9]{2,}/is",$text,$matches);
С другой стороны обнаружил, что не работает в случаях:
- если в тексте несколько телефонов подряд через пробел.
- если после телефона указано время когда звонить.
Есть ли у кого-нибудь другие алгоритмы?
А он детектирует как номер телефона конструкцию ниже ?
Ну если годы Вашего труда ушли на данную наработку - то конечно это достойно записи в анналах... А "по жизни" любой програмер ту же конструкцию пишет как дважды-два, причем более корректно и избирательно...
я бы остановился на этом :)
preg_match_all("/\\+?[\\(\\)0-9 ]{9,}/is",$text,$matches);
ибо все не отловишь, а это может схавать чуток побольше номеров, ну может и не только номера :)
Ну если годы Вашего труда ушли на данную наработку - то конечно это достойно записи в анналах
Сударь шутник?
А "по жизни" любой програмер ту же конструкцию пишет как дважды-два, причем более корректно и избирательно...
А что-то поконкретнее общих слов вы по теме сказать можете?
я бы остановился на этом
preg_match_all("/\\+?[\\(\\)0-9 ]{9,}/is",$text,$matches);
ибо все не отловишь, а это может схавать чуток побольше номеров, ну может и не только номера
Собственно проблема в том, что первое и так хавает слишком много. А этот вариант схавает еще больше мусора.
Сударь шутник?
А что-то поконкретнее общих слов вы по теме сказать можете?
Собственно проблема в том, что первое и так хавает слишком много. А этот вариант схавает еще больше мусора.
покажи пример телефоном, которые тебе надо отфильтровать.
покажи пример телефоном, которые тебе надо отфильтровать.
Пасибо, я уже написал вот так:
$sph = array();
$lph = array();
$code = array();
$sph[] = "[0-9]{2}\-[0-9]{2}\-[0-9]{2}\b";
$sph[] = "[0-9]{2} [0-9]{2} [0-9]{2}\b";
$sph[] = "[0-9]{3}\-[0-9]{3}\b";
$sph[] = "[0-9]{3} [0-9]{3}\b";
$sph[] = "[0-9]{6}\b";
$lph[] = "[0-9]{3}\-[0-9]{2}\-[0-9]{2}\b";
$lph[] = "[0-9]{3} [0-9]{2} [0-9]{2}\b";
$lph[] = "[0-9]{3}\-[0-9]{4}\b";
$lph[] = "[0-9]{3} [0-9]{4}\b";
$lph[] = "[0-9]{7}\b";
$code[] = "8[\- ]{1}0[0-9]{2}[\- ]{1}";
$code[] = "8[0-9]{3}[\- ]{1}";
$code[] = "8[0-9]{3}";
preg_match_all("/(\b".implode("|\b",$sph).")[ \.,\Z]{1}/is",$text,$mt);
foreach($mt[0] as $mp){
$phonestrings[] = $mp;
}
preg_match_all("/(\b".implode("|\b",$lph).")[ \.,\Z]{1}/is",$text,$mt);
foreach($mt[0] as $mp){
$phonestrings[] = $mp;
}
preg_match_all("/(\b".implode("|\b",$code).")(".implode("|",$lph).")[ \.,\Z]{1}/is",$text,$mt);
foreach($mt[0] as $mp){
$phonestrings[] = $mp;
}
Вроде работает. Не ловит только телефоны из районных центров с длинными кодами и короткими номерами.