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

Статус
В этой теме нельзя размещать новые ответы.

Festem

Постоялец
Регистрация
4 Сен 2014
Сообщения
97
Реакции
27
Пробую сделать регулярку, которая вытягивала бы ссылки определенных доменов , причем из разных конфигураций
Код:
<a href="_сылка_">...</a>
[url]_сылка_[/url]
[url=_сылка_]...[/URL]
Число доменов может постоянно меняться, поэтому регулярка должна быть удобной к автоматическому изменению доменов. Сделал вот такую:

PHP:
$string = "околоссылочный текст
  [url]http://same.com/index/index/[/url]
        <a href=\"http://site.ru/same_page.php\">wetrwetwert</a> [url=https://156.168.36.192/same_page.php]qqqqqqqqq[/url]
         [URL]http://www.156.168.36.192/same_page.php#qwe[/URL]";
preg_match_all('#(http|https)://([^\s]*)(156.168.36.192|site.ru)([^\s]*)#', $string, $matches);

var_dump($matches);

Все бы ничего, но она захватывает лишние символы

HTML:
array(3) {
    [0]=>
    string(49) "http://site.ru/same_page.php">wetrwetwert</a>"
    [1]=>
    string(54) "https://156.168.36.192/same_page.php]qqqqqqqqq[/url]"
    [2]=>
    string(51) "http://www.156.168.36.192/same_page.php#qwe[/URL]"
  }

По сути надо делать отсечения по таким символам - пробел, [, (, ", ' . Но что-то не выходит прикрутить к регулярке. Как это грамотнее сделать?

Для просмотра ссылки Войди или Зарегистрируйся

Пробую вот так

PHP:
(http|https)://([^\s]*)(156.168.36.192|site.ru)([^\s]*)(\[|\]|\>|\")

НО все равно последний символ остается. Да и не грамотно это, по моему
 
Последнее редактирование:
А если просто добавить [, (, ", ' в [^\s]
Код:
(http|https)://([^\s]*)(156.168.36.192|site.ru)([^\s\[\'\"(]*)
 
Огромное спасибо, только я чуть поправил и вышло вот так

Код:
(http|https)://([^\s]*)(156.168.36.192|site.ru)([^\s\[\'\"\]]*)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху