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) |
Объясни пожалуйста, что ты заменил в ней? |
Если не против, то я скажу
Он убрал одну пару ненужных круглых скобок и запретил сохранение совпадений в скобках ?:. Ну и убрал привязку к границам ^ $ (в основном они используются в preg_match). И регулярка вернула то, что ты хотел
Спустя 16 часов, 50 минут, 8 секунд (25.10.2011 - 09:52) killer8080 написал(а):
Цитата (alex12060 @ 24.10.2011 - 16:51) |
Огромное тебе спасибо! Объясни пожалуйста, что ты заменил в ней? |
Ну собственно Winston объяснил