Я не думаю, что Simple HTML DOM Parser может сделать это.
Но вы можете сделать это самостоятельно.Сначала необходимо различить базовый URI, который является URI документа, если не объявлено иначе (см. BASE
элемент ).Затем получите каждую ссылку на URI и примените алгоритмы для разрешения относительного URI, как описано в RFC 3986 (для этого уже есть классы, которые можно использовать, например PEAR-пакет Net_URL2 ).
Итак, используя эти два класса, вы можете сделать что-то вроде этого:
$uri = new Net_URL2('http://example.com/foo/bar'); // URI of the resource
$baseURI = $uri;
foreach ($html->find('base[href]') as $elem) {
$baseURI = $uri->resolve($elem->href);
}
foreach ($html->find('*[src]') as $elem) {
$elem->src = $baseURI->resolve($elem->src)->__toString();
}
foreach ($html->find('*[href]') as $elem) {
if (strtoupper($elem->tag) === 'BASE') continue;
$elem->href = $baseURI->resolve($elem->href)->__toString();
}
foreach ($html->find('form[action]') as $elem) {
$elem->action = $baseURI->resolve($elem->action)->__toString();
}
Повторить подстановку для любого другого атрибута, содержащего URI, например background
, cite
, classid
,codebase
, data
, longdesc
, profile
и usemap
(см. индекс атрибутов в HTML 4.01 ).