[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вытащить нужный текст из произовльного
alex12060
Здравствуйте всем. В общем, у меня горит проблема. У меня есть строки вида:


s059:NAM4bfq@uranus.f19.htw-berlin.de

bkdrqp:bokDrqp@ftp.phtoawrds.com:21
lombia:1fq34tyh@77.245.33.12:22



Мне нужно составить регулярку было, чтобы она проверяла эти строки. Составил:


$preg = '/^(?:ftp\:\/\/)?([a-z0-9+!*(),;?&=\$_.-]+(\:[a-zа-яё0-9+!*(),;?&=\$_.-]+)?@)?[а-яёa-z0-9-_+\$]+(\.[а-яa-z0-9+\$_-]+)*(\:[0-9]{2,5})?$/iu';


Все работает, все хорошо. Но...

Она справляется только с теми строкам, где нет других слов. Т.е. вот так выдает 0 или пустой массив:


$preg = '/^(?:ftp\:\/\/)?([a-z0-9+!*(),;?&=\$_.-]+(\:[a-zа-яё0-9+!*(),;?&=\$_.-]+)?@)?[а-яёa-z0-9-_+\$]+(\.[а-яa-z0-9+\$_-]+)*(\:[0-9]{2,5})?$/iu';

preg_match_all($preg, 'Привет, меня зовут тест. Я тебе передаю свои контакты для доступа по фтп: s059:NAM4bfq@uranus.f19.htw-berlin.de. Если что, не шали там!! :)', $res);

var_dump($res);


Выдает пустой массив. В общем, вопрос: Как сделать так, чтобы в произвольном тексте он находил и вытаскивал ftp по маске? Я уже 2 часа ломаю голову, все безуспешно...

Заранее спасибо :)



Спустя 1 час, 26 минут, 37 секунд (24.10.2011 - 10:48) killer8080 написал(а):
а так не годиться?
Свернутый текст
$t = '
s059:NAM4bfq@uranus.f19.htw-berlin.de

bkdrqp:bokDrqp@ftp.phtoawrds.com:21
lombia:1fq34tyh@77.245.33.12:22

Привет, меня зовут тест. Я тебе передаю свои контакты для доступа по фтп: s059:NAM4bfq@uranus.f19.htw-berlin.de. Если что, не шали там!! :)'

;

$preg = '#(?:ftp://)?[a-z0-9+!*(),;?&=\$_.-]+(?::[a-zа-яё0-9+!*(),;?&=\$_.-]+)?@[а-яёa-z0-9-_+\$]+(?:\.[а-яa-z0-9+\$_-]+)*(?:\:[0-9]{2,5})?#iu';

preg_match_all($preg, $t, $res);

echo '<pre>'.print_r($res,1).'</pre>';

Спустя 3 часа, 19 минут, 13 секунд (24.10.2011 - 14:07) Winston написал(а):
Если регулярка от killer8080 делает то, что тебе нужно, то ее можно немного сократить
Свернутый текст
$preg = '#(?:ftp://)?[\w+!*(),;?&=$.-]+(?::[\wа-яё+!*(),;?&=$.-]+)?@[а-яё\w+$-]+(?:\.[а-я\w+$-]+)*(?::\pN{2,5})?#iu';

Спустя 2 часа, 44 минуты, 34 секунды (24.10.2011 - 16:51) alex12060 написал(а):
killer8080

Огромное тебе спасибо! Объясни пожалуйста, что ты заменил в ней?

Спустя 10 минут, 39 секунд (24.10.2011 - 17:02) Winston написал(а):
Цитата (alex12060 @ 24.10.2011 - 16:51)
Объясни пожалуйста, что ты заменил в ней?

Если не против, то я скажу smile.gif
Он убрал одну пару ненужных круглых скобок и запретил сохранение совпадений в скобках ?:. Ну и убрал привязку к границам ^ $ (в основном они используются в preg_match). И регулярка вернула то, что ты хотел smile.gif

Спустя 16 часов, 50 минут, 8 секунд (25.10.2011 - 09:52) killer8080 написал(а):
Цитата (alex12060 @ 24.10.2011 - 16:51)
Огромное тебе спасибо! Объясни пожалуйста, что ты заменил в ней?

Ну собственно Winston объяснил smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.