0

ウェブサイトから最新のニュースを取得して、自分で含めようとしています。このサイトは Joomla (ugh) を使用しており、結果のコンテンツの href に base href がありません。

リンクが保持contensite.php?blablablaされるため、リンクが発生しますhttp://www.example.com/contensite.php?blablabla

そのため、エコーアウトする前http://にに置き換えることを考えました。http://www.basehref.comしかし、私の知識はここで止まります。

どちらを使用する必要がありますか: preg_replace, str_replace? わからない。

4

2 に答える 2

0
include_once('db_connect.php');
// connect to my db
require_once('Net/URL2.php');
include_once('dom.php');
// include html_simple_dom!

$dom = file_get_html('http://www.targetsite.com');
// get the html content of a site and pass it through html simple dom !

$elem2 = $dom->find('div[class=blog]', 0);
// set the div to target for !


$uri = new Net_URL2('http://www.svvenray.nl'); // URI of the resource
$baseURI = $uri;
foreach ($elem2->find('base[href]') as $elem) {
$baseURI = $uri->resolve($elem->href);
}

foreach ($elem2->find('*[src]') as $elem) {
$elem->src = $baseURI->resolve($elem->src)->__toString();
}
foreach ($elem2->find('*[href]') as $elem) {
if (strtoupper($elem->tag) === 'BASE') continue;
$elem->href = $baseURI->resolve($elem->href)->__toString();
}

echo $elem2; 

これにより、すべての壊れたリンクが修正され、PHP PEAR Net/URL2.php が必要になります。

于 2013-06-25T09:32:48.807 に答える