javascript - 检查两个 URL 是否是同一个页面

标签 javascript php html url sitemap

我目前正在开发一个从给定 URL 中提取各种数据的程序。为此,我有一个函数可以梳理 URL 并构建源代码中所有位置的数组。这非常有效,我已经设法过滤页面以检查是否有文件,而不是在页面上等。

我的麻烦是我已经在一些网站上测试过这个,这些网站有一个菜单,菜单选项下有子页面。导航栏上的主要选项将有一个页面值,子导航上的第一个选项将是同一页面,但在 URL 的末尾有一个值(主要用于在 javascript 之间切换)。我尝试对页面进行编码并进行比较(以缩短处理时间),但在某些网站上,URL 被放入表单字段中。

Example:

Option1 - www.example.com/page1
- first opt - www.example.com/page1?t=1
- second opt - ww.example.com/page1?t=2

由于某些网站仅使用这些值而其他页面使用 JS,因此无法从表面上去除附加标签。由于 URL 在技术上是不同的,有没有一种方法可以检查页面是否相同,即使它们位于不同的 URL 上?

最佳答案

在您的情况下,我可能建议您只检索 header 并比较 Content-Length header 。

    function content_length($url){
     $ch = curl_init($url);

     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
     curl_setopt($ch, CURLOPT_HEADER, TRUE);
     curl_setopt($ch, CURLOPT_NOBODY, TRUE);

     $data = curl_exec($ch);
     $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);

     curl_close($ch);
     return $size;
    }

    function filterURL($url) {
       // Make urls similar as possible. E.g. strip all after hash-symbol.
       return substr($url, 0, strpos($url, "#"));
    }

    $url1 = 'http://example.com/page/?foo=1#bar';
    $url2 = 'http://example.com/page/?foo=2#bar2';

    if (content_length(filterURL($url1)) == content_length(filterURL($url1))) {
      print "Same";
    } else {
      print "Different";
      doWhatYouNeedToDo();
    }

这不能保证页面相同或不同,但不要求您下载整个页面。

关于javascript - 检查两个 URL 是否是同一个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19622768/

相关文章:

php - 将 JSON 数据从 Controller 发送到 Blade 中的 View : Laravel 5. 2

html - 如何使导航栏在页面上拉伸(stretch)(HTML)

html - 我摆脱了 CSS 中的类,我的段落元素将不起作用...为什么?

javascript - 通过 GET URL 加载 Bootstrap nav nav-tabs

javascript - 无法在此 33 个元素的节点列表中选择第一个 child

javascript - dc.js:数据子集的条形图

php - 如何改进此 PHP 分页算法?

javascript - 使用文件 API 将资源加载到 Three.js 中

php - 根据提供的日期创建日期范围选择器

javascript - 如何在html a href标签中添加多个javascript变量