К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Извлечь из текстовой переменной e-mail (PHP)

Гость
0 - 27.03.2015 - 17:39
Прошу совета.
Есть идентичные текстовые данные, например
$a="--- phone: > +7 (928) 123 456 моб. +7 (918) 123 456 моб. url: skype: email: mail@yandex.ru ";
$a="--- phone: 8(918)4444444 url: www.site.ru skype: email: mail@mail.ru";
Данные подгружаются по запросу из MySQL
Необходимо "выдрать" из $a адрес email (учитывая что в некоторых значениях в конце адреса стоит "пробел" и присвоить это значение переменной $mail



Гость
1 - 27.03.2015 - 18:22
Чтобы лишний раз не ломать голову над регулярками, я бы сделал так

$a = "--- phone: 8(918)4444444 url: www.site.ru skype: email: mail@mail.ru";

$string_items = array_reverse(explode(' ', $a));

foreach ($string_items as $item)
**
if (filter_var($item, FILTER_VALIDATE_EMAIL))
**
$mail = $item;
break;
**
**
Гость
2 - 27.03.2015 - 18:23
Вместо звездочек поставьте открывающую фигурную скобку
Гость
3 - 27.03.2015 - 19:36
Игорь2 - при использовании в коде прямого присвоения значения $a все отлично работает, но когда я $a присваиваю переменную полученную в БД, не работает
Гость
4 - 28.03.2015 - 00:34
Если данные одинаковые, такого не может быть.
Гость
5 - 28.03.2015 - 10:25
Игорь2 - в личку скинул ссылку на видео с проблемой. Понимаю что одинаковые, но в чем проблема не пойму.
Гость
6 - 28.03.2015 - 11:52
5-Койот >вардамп а сделайте и сюда
Гость
7 - 28.03.2015 - 12:22
А не проще

$lst = explode('email:', $a);
$mail = trim($lst[1]);

Это если как в примере email: и в конце строки!
Гость
8 - 28.03.2015 - 12:53
6
Сделал 2 переменные а и b (а - получаю из БД, b-присваиваю)
делаю вывод echo для $a и $b
----------------------
значение а: --- phone: > +7 (928) 444 4444 моб. +7 (918) 444 4444 моб. url: skype: email: mail@yandex.ru
значение b: --- phone: > +7 (928) 444 4444 моб. +7 (918) 444 4444 моб. url: skype: email: mail@yandex.ru
----------------------
теперь формирую вардамп
----------------------
вардамп для $a: string(109) "--- phone: > +7 (928) 444 4444 моб. +7 (918)444 4444 моб. url: skype: email: mail@yandex.ru "
вардамп для $b: string(104) "--- phone: > +7 (928) 444 4444 моб. +7 (918) 444 4444 моб. url: skype: email: mail@yandex.ru"
вардамп для $mail полученного из $b: string(20) "mail@yandex.ru"
вардамп для $mail полученного из $a: NULL
Гость
9 - 28.03.2015 - 12:59
7 - спасибо. работает.
Гость
10 - 29.03.2015 - 00:10
8-Койот >непонятно, куда 4 байта делись.. Что то связанное с кодировками. Кодировка файла скрипта и таблицы mysql какая?
Гость
11 - 29.03.2015 - 13:54
10-Фанат NASCAR >Да у него уже все работает!
9-Койот >7 - спасибо. работает.
Там e-mail находится в конце строки и после "email:"
По этому достаточно разбить строку на 2 блока - explode('email:', $a); И во 2 блоке убрать лишние пробелы (в начале и конце) - trim($lst[1]); - ВСЕ!
Гость
12 - 29.03.2015 - 22:39
11-AlexIT >это понятно (если вникнуть), размеры чото несходятся в вардампах)
Гость
13 - 29.03.2015 - 22:41
Просто активно пытаюсь освоить регулярки, получается, но с таким скрипом что пстц. Все работает, но скорее методом тыка))
Гость
14 - 30.03.2015 - 09:52
13-Фанат NASCAR > Если память не подводит, то достаточно хорошо регулярки описаны в кемелбуке "Программирование на Perl" Chapter 5 Pattern Matching
Гость
15 - 30.03.2015 - 13:02
14-40KHYTbIU >да много описаний, время/нагрузка, башка не запоминает уже новое..


К списку вопросов






Copyright ©, Все права защищены