Что нового

Извлечение ссылок, которые без префикса 'http://'

The Dream

Новичок
Сообщения
393
Репутация
3
Всем привет.

Есть замечательная ф-ция
Код:
_IELinkGetCollection()
.
Но примечательно то, что она "отлавливает" все, что с атрибутом href (логично).
Подскажите пожалуйста, как с помощью регулярных выражений извлекать не только стандартного формата, но и без 'http://'. Обращаюсь за помощью, так как не смог понять как это делать с помощью регулярных выражений.

Такой вариант к сожалению не работает:
Код:
$sPattern = '<url>(.+?)</url>'
$aResult = StringRegExp($sText, $sPattern)
_ArrayDisplay($aResult)


То есть цель - извлечь в массив весь текст, что между тегами. Просто в теге <url> и есть те адреса, что без 'http://' - префикса.

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

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

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
The Dream,
А разве есть тег <url>...</url>? Может быть это BBcode ?
Код:
[url=http://autoit-script.ru/autoit3_docs/libfunctions/_ielinkgetcollection.htm]_IELinkGetCollection[/url]
 
Автор
T

The Dream

Новичок
Сообщения
393
Репутация
3
madmasles

Теги могут быть любыми, в зависимости от предпочтения автора.
Проблему решил с помощью
Код:
StringSplit()


Пример приводить не стану, так как там много личного кода, но думаю просто понять как StringSplit может заменить регулярные выражения - просто чуть сложнее и запутано..

Конечно способ придуман как будто именно для тех, кто не знает регулярных выражений :whistle:
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Re: Извлечение ссылок, которые без префикса \'http://\'

Примерно так (не вдаваяь в подробности формата ссылок) :
Код:
#Include<Array.au3>
$sText = "[url_=http://autoit-script.ru/autoit3_docs/libfunctions/_ielinkgetcollection.htm]_IELinkGetCollection[/url]"  & @CRLF & _ 
"[url_=d:\Downloads\[/url]"  & @CRLF & _ 
"[url_=http://autoit-script.ru/autoit3_docs/libfunctions/_arraydisplay.htm[/url]"

$sPatern = "\[url_=((?!http).+?)\[/url\]"
$aResult = StringRegExp( $sText, $sPatern, 3 )
_ArrayDisplay($aResult, ' Test Result ')


Здесь Url заменено на Url_ из-за того, что движок форума автоматически выполняет трансформацию кода с Url в код ссылки


Добавлено:
Сообщение автоматически объединено:

Например для ссылок формата : "a href"
Код:
#Include<Array.au3>
$sText = "	<link rel='stylesheet' type='text/css' href='http://autoit-script.ru/Themes/RuNet/style.css?rc1'/>"  & @CRLF & _ 
"	<link rel='stylesheet' type='text/css' href='http://autoit-script.ru/Themes/default/css/print.css?rc1' media='print'/>"  & @CRLF & _ 
"	<link rel='help' href='http://autoit-script.ru/index.php?action=help'/>"  & @CRLF & _ 
"	<link rel='search' href='Моя ссылка 1'/>"  & @CRLF & _ 
"	<link rel='contents' href='http://autoit-script.ru/index.php'/>"  & @CRLF & _ 
"	<link rel='alternate' type='application/rss+xml' title='AutoIt Сообщество - Объявления и новости' href='Моя ссылка 2'/>"  & @CRLF & _ 
"	<link rel='alternate' type='application/rss+xml' title='AutoIt Сообщество - Все разделы' href='http://autoit-script.ru/index.php?type=rss;action=.xml;limit=10'/>"  & @CRLF & _ 
"	"

$sPatern = "(?i)href=\h*'((?!http).+?)'"
$aResult = StringRegExp( $sText, $sPatern, 3 )
_ArrayDisplay($aResult, ' Test Result ')
 
Верх