Имя: Пароль:
IT
Веб-мастеринг
Нужно регулярное выражение найти все url в тексте
,
0 Помогите
 
16.12.14
06:18
Собственно сабж.
В интернетах много нашел, но все очень сложные и навороченные, и при том разные. И не проходят некоторые тесты.
Есть какая-нибудь универсальная, проверенная, утвержденная, безошибочная, оптимальная?
1 Woldemar22LR
 
16.12.14
07:43
тебе на каком языке?
2 Помогите
 
16.12.14
07:59
на php
3 Помогите
 
16.12.14
09:09
Апчху!
4 Woldemar22LR
 
16.12.14
09:11
А на Perl никак не подойдет?
5 Помогите
 
16.12.14
09:14
(4) Подойдет. Переделаю на PHP сам
6 Asmody
 
16.12.14
09:58
Универсального на все случаи нет.
Могу кинуть регулярку из кода форума.
7 Asmody
 
16.12.14
10:02
function filter_urls($message_text)
{
    $regexp = '/((?:(?:(?:ht|f)tps?:\/\/)|(?:www.))[^<\s]+[[:alnum:]|\/])([^[:alnum:]](?:<br ?\/?>)[^a-zа-€0-9]|\s|$)/si';
    $new_message_text = preg_replace_callback($regexp, 'filter_urls_callback', $message_text);
    return $new_message_text;
}
8 Гёдза
 
16.12.14
10:18
(7) Это тот что на мисте?
9 su_mai
 
16.12.14
10:28
(0) >И не проходят некоторые тесты.
Какие тесты?
10 Помогите
 
16.12.14
13:04
(7) Вообще не проходит тесты, первые же два не прошел:

<a href=http://ya.ru>yandex</a>;

"http://ya.ru";
11 Помогите
 
16.12.14
13:05
Более сложные даже не стал пробовать
12 Помогите
 
16.12.14
13:35
Апну
13 su_mai
 
16.12.14
14:04
Чисто на вскидку :)

(ht|f)tp(s)?://(w{3}\.)?([0-9a-zA-Zа-яА-Я_-]\.?)+
14 su_mai
 
16.12.14
14:11
+(13) хотя конечно спецификация w3c определяет более широкие варианты для url
15 Помогите
 
16.12.14
17:03
(13) Сам понимаешь что слабовато. Без тестов даже видно. Где / слэш? Буквы Ёё забыл. И т.д.
16 Записьдампа
 
16.12.14
17:32
(15) Тебе шашечки или ехать, т-щ экзаменатор?

((?:ht|f)tps?://\S+)

Найти!=Проверить
17 su_mai
 
16.12.14
20:25
(15) Я думал ты сам что то можешь... :(
18 su_mai
 
16.12.14
20:26
+(17)

(ht|f)tp(s)?://(w{3}\.)?([0-9a-zA-Zа-яА-Я_-]\.?)+(/[^<> \r\n]+)?
19 Asmody
 
16.12.14
21:05
(10) не знаю, что у тебя там за тесты, http://ya.ru - работает
20 User_Agronom
 
16.12.14
22:38
(10) а www в выражении не заметно?
21 User_Agronom
 
16.12.14
22:38
(20) Виноват, невнимательно смотрел.
22 Адинэснег
 
16.12.14
22:55
(10) хреф у а без кавычек
23 Помогите
 
17.12.14
11:52
(17) Могу конечно, но этот вопрос сильно сложный для меня. (18) Слабовато. Видно без проверок

(19) Пример двух тестов которые твой скрипт не проходит смотри в (10)

(22) Да. Что ты этим хотел сказать?
24 Помогите
 
18.12.14
06:23
никто не пользовался регулярками для поиска урлов?
25 su_mai
 
18.12.14
09:28
(23) >(18) Слабовато. Видно без проверок
Никто и не спорит (13)(14), что бы сделать универсальное надо реализовать стандарт w3c url, а это время деньги.

Приведи примеры которые не проходят, просто интересно. Я тестировал на своих элементарных примерах:
http://zalil-slil.rusfolder.net/files/42564930
Находит все начинающиеся с http или ftp.
26 Помогите
 
18.12.14
09:52
(25) посмотрю какие тесты не пройдет. По коду сразу вопрос, (w{3}\.)? нахрена???
27 Помогите
 
18.12.14
10:02
(25) пример: http://ya.ru. точку не отсекает в конце
28 Помогите
 
18.12.14
10:17
(16) Росписьдата, что ты этим хотел сказать? Не понятно.
29 xaozai
 
18.12.14
10:20
Здесь есть неплохой ответ и ссылка на содержательное обсуждение вопроса:
http://superuser.com/questions/623168/regex-to-parse-urls-from-text
30 su_mai
 
18.12.14
10:44
(29) Спасибо
31 Помогите
 
18.12.14
10:54
(29) Спасибо. Это уже серьезно
Закон Брукера: Даже маленькая практика стоит большой теории.