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 >да много описаний, время/нагрузка, башка не запоминает уже новое.. | |
| Интернет-форум Краснодарского края и Краснодара |