# Нормализация абсолютных путей при парсинге в PHP

Когда осуществляется парсинг сайтов, нам как правило нужно получать адреса ссылок, пути к картинкам, CSS и JavaScript файлам.

Для наших целей было бы удобно, чтобы эти адреса содержали полный URL вместе с именем домена, примерно вот так:

`<a href="http://targ.loc/dir/sub/page.html">text</a>`

В реальной жизни, однако, доменное имя в путях на сайте принято опускать и пути выглядят примерно вот так (со слешем в начале):

`<a href="/dir/sub/page.html">text</a>`

Давайте выполним нормализацию такого пути. Пусть у нас в переменной хранится домен, к которому мы обращаемся:

`<?php $domain = 'http://targ.loc'; ?>`

Пусть мы также извлекли путь из `href` ссылки:

`<?php $href = '/dir/sub/page.html'; ?>`

Давайте выполним его нормализацию:

`<?php $norm = $domain . $href; ?>`

Получите все `href` на странице и выполните их нормализацию:

`<a href="/page.html">text</a> <a href="/dir/page.html">text</a> <a href="/dir/sub/page.html">text</a>`

Получите все `href` на странице и выполните их нормализацию, где это необходимо:

`<a href="/page.html">text</a> <a href="/dir/page.html">text</a> <a href="/dir/sub/page.html">text</a> <a href="http://targ.loc/dir/sub/page.html">text</a>`

Получите все `src` на странице и выполните их нормализацию, где это необходимо:

`<img src="/img.png"> <img src="/images/img.png"> <img src="http://targ.loc/images/img.png">`

Получите все пути и выполните их нормализацию:

`<link rel="stylesheet" href="/styles.css"> <script src="/scripts.js"></script>`

Получите все пути и выполните их нормализацию:

`div { background: url('/images/img.png'); }`

Получите все пути и выполните их нормализацию:

`div { background: url(/img.png); background: url('/images/img.png'); background: url("/images/img.png"); background: url("http://targ.loc/images/img.png"); }`
←→
↑