Нармалізацыя абсалютных шляхоў пры парсінгу ў 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");
}