1

所以我使用简单的 html dom,我想检索页面的一部分,这似乎工作正常 :) 但链接不正确,它们是相对于我的网站...我决定使用基本标签代替。 ...这就是我所拥有的

<?php
include('simple_html_dom.php');

$url = "http://bm.erciyes.edu.tr/";
$file = file_get_html($url);

echo "<base href='$url'>";
foreach($file->find('div.onemliduyurular') as $var){
    echo $var->innertext;
}


$url = "http://bm.erciyes.edu.tr/";
?>

<h1>Return to my Site</h1>
<?php

// I want this link here become relative to my site again
echo "<a href='hello.php'>Go This Way</a>"; 

所以在 foreach 上面添加了这一行

echo "<base href='$url'>";

有没有办法可以重置基本标签?或任何其他替代方案;)

内部文本包含这个

// get dom node's inner html
    function innertext()
    {
        if (isset($this->_[HDOM_INFO_INNER])) return $this->_[HDOM_INFO_INNER];
        if (isset($this->_[HDOM_INFO_TEXT])) return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]);

        $ret = '';
        foreach ($this->nodes as $n)
            $ret .= $n->outertext();
        return $ret;
    }

这是我正在拉的公告

4

2 回答 2

3

您不能更改另一个base元素中的基地址,因为 HTML语法head最多允许一个base元素。HTML5 不会改变这一点;它明确表示:“如果有多个具有 href 属性的基本元素,则忽略除第一个之外的所有元素。”</p>

结论是您需要发出适当的绝对 URL。

于 2013-11-11T20:08:41.567 回答
1

其中一种方法是使用绝对 url

...如果您在您的 url 前面加上来自被拉站点的相对 URL 怎么办....

<?php
foreach($html->find('div.onemliduyurular') as $d) {
    foreach($d->find('a[href]') as $goAway){
        $goAway->href =$url.$goAway->href;
        }
    echo $d->innertext;
}
$html->clear();
unset($html);

我希望它可以与您的项目一起使用

于 2013-11-15T18:34:40.857 回答