Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вырезать номера телефонов
 
 автор: ronin   (24.07.2008 в 16:42)   письмо автору
 
 

Здравствуйте!
Как вырезать из текста номера телефонов?
Ведь если вырезать все цифры то можно прихватить нужные цифры, к примеру цену
т.е. логика такова: если больше трех цифр подряд или цифры имеет перед собой - или слово : телефон или тел или т.:

  Ответить  
 
 автор: Trianon   (24.07.2008 в 16:47)   письмо автору
 
   для: ronin   (24.07.2008 в 16:42)
 

Зачем?


PS. Да что ж это за полоса такая пошла... Каждый третий вопрос льет воду на мельницу спамеров.

  Ответить  
 
 автор: ronin   (24.07.2008 в 17:04)   письмо автору
 
   для: Trianon   (24.07.2008 в 16:47)
 

Идея такова: доска объявлений, юзер логиниться введя свой адрес, на который высылается пароль, после размещает информацию, при этом нельзя, ведь, проверить его ли это телефон или это хулиганская выходка . А так если кто хочет ответить на сообщение, он сможет отправить сообщение на реальный элестронный адрес!

  Ответить  
 
 автор: Trianon   (24.07.2008 в 18:16)   письмо автору
 
   для: ronin   (24.07.2008 в 17:04)
 

Тогда я неверно воспринял слово вырезать.

Мрак... кто захочет - напишет телефон прописью, разрядкой или еще как-нибудь.
Хотите запретить указание той или иной информации - вводите премодерацию.

  Ответить  
 
 автор: ronin   (24.07.2008 в 18:25)   письмо автору
 
   для: Trianon   (24.07.2008 в 18:16)
 

Жуть! вот, вот, это столько работы, мне б програмно:) никто не говорит 100% гарантией, в вашем стиле - не наблюдечке, а чтоб подумать можно было:)

  Ответить  
 
 автор: Trianon   (24.07.2008 в 20:22)   письмо автору
 
   для: ronin   (24.07.2008 в 18:25)
 

$pattern = '/
  ( 
       \d\d\d[-\s]\d\d[-\s]\d\d      #  111-11-11
    |  \d\d\d[-\s]\d\d\d\d           #  111-1111
    |  \d\d\d\d\d\d\d                #  1111111
  )
/x';

$text = preg_replace($pattern, $text, '***-**-**');

  Ответить  
 
 автор: BinLaden   (24.07.2008 в 21:53)   письмо автору
 
   для: Trianon   (24.07.2008 в 20:22)
 

> \d\d\d-\d\d\d\d # 1111111

\d{7} ?

  Ответить  
 
 автор: Trianon   (24.07.2008 в 22:00)   письмо автору
 
   для: BinLaden   (24.07.2008 в 21:53)
 

угу.

  Ответить  
 
 автор: AcidTrash   (24.07.2008 в 23:28)   письмо автору
 
   для: ronin   (24.07.2008 в 18:25)
 

Думаю, что здесь так просто не проверишь.
Пользователь может номер телефона написать как угодно.
Скажем просто
111-11-11
или
+7(495) 111-11-11,
(495) 111-11-11
и т.д.

Надо пользователю указать формат записи телефона и далее проверять введенные данные.

  Ответить  
 
 автор: Trianon   (24.07.2008 в 23:54)   письмо автору
 
   для: AcidTrash   (24.07.2008 в 23:28)
 

Во всех перечисленных случаях содержательная часть номера будет убрана. Что и надо автору...

>Надо пользователю указать формат записи телефона и далее проверять введенные данные.

Понятно. Вы просто не прочли тред. Пользователю запрещено оставлять номера телефонов в сообщении.

  Ответить  
 
 автор: ronin   (25.07.2008 в 10:52)   письмо автору
 
   для: Trianon   (24.07.2008 в 23:54)
 

Спасибо!
Вы дали на блюдечке, с голобой каемочкой:)
единственное дополнение, с учетом того, что номер может быть 6-значным:

$post= "Всем привет! 679-99-88 Как поживаете? 90-55-66 ghbdtn 666666 7777777";
$pattern = '/
  (
     \d\d[-\s]\d\d[-\s]\d\d      #  11-11-11
     |  \d\d\d[-\s]\d\d[-\s]\d\d      #  111-11-11
    |  \d\d\d[-\s]\d\d\d\d           #  111-1111
    |    \d\d\d\d\d\d\d                  #  1111111
    |    \d\d\d\d\d\d                 #  111111
  )
/x';
$text = preg_replace($pattern, $text, $post);
echo $text;

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования