Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447

Вытаскиваем из текста с гиперссылками домены

06.10.2015, 13:24. Показов 1062. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код:
PHP
1
2
3
4
5
6
7
8
9
10
11
// Вытаскиваем из текста с гиперссылками домены
$text = 
'Информация <a href="http://domen1.ru/index.php" target="_blank" class="cup">ремонт компьютеров на сайте</a> 
Мы предлагаем <a href="http://domen2.ru/5" target="_blank" class="cup">скидки магазин моделей</a> на высоком уровне. 
Подробности <a href="http://domen3.ru/er/" target="_blank" class="cup">программы для работы на сайте</a>.';
 
preg_match_all('/(http:[\/][\/]([^\/]+)[\/][^\s">]+)[\s">]/is',$text,$matches);
foreach($matches[2] as $key => $value) {
 $textw .= $value.'<br>';
}   
 echo $textw;
Выводит правильно:
domen1.ru
domen2.ru
domen3.ru

1 проблема: если URL такого вида: http://domen3.ru/
То вывод domen3.ru исчезает.

2 проблема: если URL такого вида: http://domen3.ru
То при выводе domen3.ru добавляются лишние символы.

Помогите поправить регулярку.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.10.2015, 13:24
Ответы с готовыми решениями:

Вытаскиваем содержимое. GET запрос
Например есть блокнот на фтп с содержимым: &quot;олфыов&quot;, как можно вывести этот текст в richTextBox1?

Вытаскиваем имена файлов
1.1 Узнать имена всех файлов которые розположены в категории c://pol/ допустим: c://pol/google.txt c://pol/hooo.exe т.д

NSURLSession, вытаскиваем данные
Все попытки добавления данных в виде addObject - безуспешны, массив остается пустой, хотя данные которые пытаемся туда добавить -...

9
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
06.10.2015, 13:41
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
 
// Вытаскиваем из текста с гиперссылками домены
$text = 
'Информация <a href="http://domen1.ru/index.php" target="_blank" class="cup">ремонт компьютеров на сайте</a> 
Мы предлагаем <a href="http://domen2.ru/5" target="_blank" class="cup">скидки магазин моделей</a> на высоком уровне.
Подробности <a href="http://domen3.ru" target="_blank" class="cup">программы для работы на сайте</a>.
Подробности <a href="http://domen3.ru/" target="_blank" class="cup">программы для работы на сайте</a>.
Подробности <a href=http://domen3.ru/ target="_blank" class="cup">программы для работы на сайте</a>.
Подробности <a href="http://domen3.ru/er/" target="_blank" class="cup">программы для работы на сайте</a>.';
 
$textw = '';
 
preg_match_all('~https?://([^/"\'\s]+)~i',$text,$matches);
foreach($matches[1] as $key => $value) {
 $textw .= $value."<br>\n";
}   
 echo $textw;
это если по-простому. по-хорошему, надо глянуть в rfc по урл-кам, какие символы допустимы в имени домена +учесть punnycode ну и другие особенности, это долго. на практике в 99% случаев будет достаточно регулярки выше.
однако, если вам нужно именно в контексте тега a, скажите, там посложнее немного
1
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
09.10.2015, 19:49  [ТС]
И еще нужна регулярка, где одна гиперссылка из нее вытащить только URL, желательно в 1 строку.
PHP
1
$str = 'Узнайте на сайте <a href="http://www.sait.org/school/s_chego_nachat/" target="_blank" class="linksp">городском</a> что такое рынок';
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
09.10.2015, 22:45
PHP
1
preg_match_all('`https?://[-a-zA-Z0-9\./_%?=&#~:]++`', $text, $matches);
тоже упрощенно

Добавлено через 2 минуты
или можно так:
PHP
1
preg_match_all('~https?://([^"\'\s]++)~i',$text,$matches);
1
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
09.10.2015, 23:22  [ТС]
Итого получилось:
PHP
1
2
3
4
5
6
7
// Очищаем гипперсылку до URL
preg_match_all('~https?://([^"\'\s]++)~i',$text,$matches);
foreach($matches[1] as $key => $value) {
 $domen .= $value;
}   
// Вытаскиваем домен
echo parse_url('http://' . $domen, PHP_URL_HOST);
Окончательный результат мне нужно вывести домен, применил parse_url, а может лучше в регулярке это сделать?
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
09.10.2015, 23:25
блин. что вы творите? у вас в $value в цикле и будет имя домена. выводите его и все. зачем конкатенацию делать?
0
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
09.10.2015, 23:43  [ТС]
помогите я в ступоре
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
09.10.2015, 23:59
PHP
1
2
3
4
preg_match_all('~https?://([^"\'\s]++)~i',$text,$matches);
foreach($matches[1] as $key => $value) {
  echo $value, "\n";
}
0
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
10.10.2015, 00:03  [ТС]
Я вообще-то про домен говорил, а так выводится полный адрес
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
10.10.2015, 00:06
Цитата Сообщение от NEbO Посмотреть сообщение
PHP
1
2
3
4
5
preg_match_all('~https?://([^/"\'\s]+)~i',$text,$matches);
foreach($matches[1] as $key => $value) {
  $textw .= $value."<br>\n";
}
echo $textw;
да, не тот код скопировал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.10.2015, 00:06
Помогаю со студенческими работами здесь

Вытаскиваем JS из PDF файла
Всем привет, хочу поделиться с вами одним прекрасным инструментом под названием &quot;xPDF&quot; сборка &quot;poppler-0.68.0&quot;. ...

Вытаскиваем картинку из массива
Суть такая: есть массив картинок &quot;shamass&quot; (в примере будет всего 2), имедж &quot;shapka&quot;, в который должна отображаться выбранная картинка и...

Вытаскиваем ссылку из базы и редиректим с нее
Скрипт сокращателя. Приложен. Пример urltest.ga Проблема: при попытке перейти по сокращенной странице, она открывается во фрейме и...

Steam api, вытаскиваем инвентарь игры CSGO
Мне нужно вывести на страницу инвентарь игры CSGO пользователя, например мой инвентарь:...

Вытаскиваем иконку из exe файла и засовываем в ListView
Всем доброго времечка! Что то я затупил последнее время, помогите со ступором. И так: Получаю иконку из Экзешника: Dim ico As...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru