Перейти к содержимому


Партнерская программа Kredov

  • Закрытая тема Тема закрыта

Регулярное выражение. Вытаскивание адреса

#1 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0
0

Отправлено 10 Март 2010 - 06:21

([^\n]+[a-z]+[@]{1}[a-z]+\.+[a-z]+[\n])|([^\n]+[a-z]+[\[at\]]{1}[a-z]+[\[dot\]]{1}[a-z]+[\n])|([^\n]+[a-z]+[\s\[at\]\s]{1}[a-z]+[\s\[dot\]\s]{1}[a-z]+[\n])


Вот регулярное выражение, которое должно из данного текста вытащить адреса вида

name@domain.zone
name[at]domain[dot]zone
name [at] domain [dot] zone

Где zone - любая доменная зона (com, net, co.uk, ...)

Если оставить только первые две круглые скобки, то он вытаскивает результаты, первых двух вариантов. Но вот с третим вариантом беда. Он никак не хочет вытаскивать пробелы.

Вот текст
name@domain.zone
SomeText orLess#thanRather
somemoretext
name[at]domain[dot]zone
name [at] domain [dot] zone

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 11 Март 2010 - 00:20

gaaarfild, эх, нехорошими делишками занимаемся... А-я-яй :huh:
Вот смастерил, работает по всем твоим запросам.
<?php

$str = "name@domain.zone
SomeText orLess#thanRather
somemoretext
name[at]domain[dot]zone
name [at] domain [dot] zone";

$regexp = "#([a-z0-9-_]+)(?:@|\[at\]| \[at\] )([a-z0-9-_]+)(?:\.|\[dot\]| \[dot\] )([a-z]+)#i";
preg_match_all($regexp, $str, $matches, PREG_SET_ORDER);

echo "<pre>";
print_r($matches);
echo "</pre>";

?>

  • 0

#3 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 11 Март 2010 - 02:34

Огромное спасибо, и , честно - это не для нехороших делишек. =)
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 11 Март 2010 - 20:54

gaaarfild, не будет работать для мыл, основанных на доменах более второго уровня :P Там нужна итерация
  • 0

#5 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 12 Март 2010 - 07:31

Да и ненужно. =) Это все, что необходимо. =) Хотя итерацию был бы тоже рад посмотреть. =)
А за это - Громадное Оригато!
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 13 Март 2010 - 23:36

gaaarfild, всегда пожалуйста, добром на добро :P Темку закрываю.
  • 0


Оформление форума – IPBSkins.ru