Описание

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

Синтаксис

string absolutize_links(string $_input, string $_host);
Параметр Описание
$_input HTML с относительными ссылками.
$_host Хост для подстановки к ссылкам.

Листинг

function absolutize_links($_input, $_host) {
	$host = 'http://' . $_host;
	$result = '';
	$input_ = preg_split('/(<[Aa]{1}[^>]*>)/', $_input, -1, PREG_SPLIT_DELIM_CAPTURE);
	foreach ($input_ as $row) {
		if (preg_match('/^<[Aa]{1}[^>]*>/', $row)) {
			$row_ = preg_split('/[\s]{1}[Hh]{1}[Rr]{1}[Ee]{1}[Ff]{1}="([^"]*)"/', $row, -1, PREG_SPLIT_DELIM_CAPTURE);
			if (is_array($row_) && count($row_) == 3) {
				$link = $row_[1];
				if (substr($link, 0, 1) == '/') {
					$row = preg_replace('/[Hh]{1}[Rr]{1}[Ee]{1}[Ff]{1}="[^"]*"/', 'href="' . rtrim($host, '/') . $link . '"', $row);
				}
			}
		}
		$result .= $row;
	}
	return $result;
}