Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330

Извлечь все ссылки в разных вариациях из строки

13.12.2019, 17:18. Показов 3055. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
С регулярками не сильно дружу, пожалуй смогу написать какой-нибудь громадный корявый шаблон за пару часов, но думаю лучше попросить помощи у профессионалов) Подскажите пожалуйста, как из строки извлечь ссылки в разных вариациях?

Такой вариант извлекает ссылки которые начинаются на https|http, а нужно чтобы извлекал даже без протокола в разных доменных зонах. Предполагаю нужно цепляться за окончание ссылки, а не за его начало. Перечислить все возможные доменные зоны .ru|.com|.su|.uk и т.д. и как-то так.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
   $string = '1. Какой-то текст ла ла 1.00
2. Какой-то текст ла ла
3. Еще Какой-то текст ла ла,
4. Еще тук-тук
link-1 https://www.domen.ru link-1 
link-2 https://domen.ru link-2  
link-3 http://www.domen.ru link-3 
link-4 http://domen.ru link-4 
link-5 www.domen.ru link-5 
link-6 https://www.domen.com link-6 
link-7 www.domen.com link-7 
link-8 domen.com link-8 
link-9 www.gdomen.ru /rust link-9 ';
 
$urls = getUrls($string);
    print_r($urls);
    
    function getUrls($string)
    {
        $regex = '#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#';
        preg_match_all($regex, $string, $matches);
        return ($matches[0]);
    }
Добавлено через 2 часа 17 минут
Придумал такой шаблон. Насколько он будет эффективен?)
PHP
1
$regex = '#[\w\.\-]+(ru|com|net)#';
Добавлено через 1 час 51 минуту
Предыдущий вариант ловил слова типа forum и .т.
Доработал немного.
PHP
1
$regex = '#[\w\.\-]+(.[.]ru|.[.]com|.[.]net)#';
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.12.2019, 17:18
Ответы с готовыми решениями:

Извлечь все измененные файлы из разных директорий
Доброго времени суток друзья ;-) Назрел такой вопрос, хотя уже прошерстил все, что можно... :-) В общем ситуация думаю многим знакомая....

Извлечь все ссылки из ярлыков .url и сохранить в текстовый файл
Доброго времени суток Ребята, помогите пожалуйста извлечь все ссылки из ярлыков .url и сохранить ссылки (по одной на строку) в текстовый...

Используя регулярные выражения извлечь из текста html-файла все ссылки
Извлеките из текста html-файла все ссылки (всё, что содержится в шаблоне &lt;a href=’…’&gt;)* * Для работы с html запросами используйте...

4
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
13.12.2019, 21:17
Лучший ответ Сообщение было отмечено Строитель как решение

Решение

Nalik, ~https?://(?:w{3})?\S+|\S+(?:ru|com|net)\b~
0
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
13.12.2019, 21:28  [ТС]
Строитель, спасибо) а если присутствует пробел?
Например: domen. ru или domen .ru

Добавлено через 1 минуту
Ну типа как делают чтобы "обойти" ограничение на размещение запрещенных ссылок)
0
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
13.12.2019, 21:34
Цитата Сообщение от Nalik Посмотреть сообщение
а если присутствует пробел?
С пробелом это уже будет не ссылка (по которой можно перейти), а простой текст. Всё не предусмотришь.
0
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
13.12.2019, 21:36  [ТС]
Строитель, соглашусь, что все не предусмотришь. Но то что можно предусмотреть, лучше предусмотреть) Спасибо за помощь)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.12.2019, 21:36
Помогаю со студенческими работами здесь

Извлечь все числа из строки и поместить в массив
Нужен код, который извлекает из строки вида &quot;1+9-5/4|3\5&quot; все числа, и записывает их в int массив. Числа - любые int, в том числе...

извлечь ссылки
Здравствуйте! Помогите решить проблему пожалуйста. В общем нужно чтобы от тега &lt;li&gt; до &quot;&gt; пропарсили первую ссылку на...

Как извлечь определенную часть ссылки
Как извлечь нужный текст из строки (типа string) вида &quot;https://www.cyberforum.ru/newthread.php?do=newthread&amp;f=18&quot; значение do? - в...

Woo в вариациях не сохраняет цена, кол-во
здравствуйте. после переезда на новый хостинг, у части вариативных товаров не сохраняются цена и/или количество, когда много вариантов на...

Извлечь из ссылки на статью в википедии название этой статьи
Подскажите, пожалуйста, как с помощью Python 3 перевести ссылку такого типа: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru