【问题标题】:How to reset the base tag如何重置基本标签
【发布时间】:2013-11-16 02:34:40
【问题描述】:

所以我使用simple 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;
    }

这是我拉的公告

【问题讨论】:

  • 使用绝对网址即可。
  • 您需要修改这些链接以包含完整路径,simple-html-dom 中应该有一些内容。
  • @SLaks 不能使用绝对路径,谢谢...
  • @enrey 我已经找了一段时间了,由于某种原因无法弄清楚:(
  • $var-&gt;innertext 里面是什么?

标签: php html curl simple-html-dom base-tag


【解决方案1】:

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

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

【讨论】:

  • 有没有办法不使用基本标签?
  • 一种方法来做什么?最初的问题与当前的问题有很大不同。我想我们还没有看到真正的问题。但在 HTML 中,base 设置基地址的方式。
  • @Fahad 有办法,你需要使用绝对地址。
  • @enrey,看到我想多次设置基本标签,因为我正在提取信息的网站不使用绝对地址(它使用相对地址)-相信我,我想使用绝对地址...并且正在从许多站点中提取信息,因此我需要多次更改基本网址:(其中基本标签只能使用一次(“JukkaK.Korpela”的答案)
  • @Fahad 是的,我知道,您需要解析该 html 并完成这些地址,因此您有绝对地址。你必须弄脏你的手,钻进那条该死的绳子,然后手动更换,这就是我要说的。在 php 中,有 php.net/manual/en/book.simplexml.php 类可以帮助您。您将必须学习一些 Xpath,而且可能不会只有几行代码,这取决于 html 中有多少种类。
【解决方案2】:

其中一种方法是使用绝对网址

... 如果你在你的 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-12-16
    • 1970-01-01
    • 2021-07-05
    • 2011-04-18
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多