0

Ia 计划从任何给定的 URL 获取菜单元素(链接)。这意味着代码应该从站点上存在的所有其他链接中过滤菜单链接(将用于在特定站点内导航的链接)。

我一直计划使用simplehtmldom,因为我以前用它来解析内容。

问题:

  1. 菜单链接容器可以采用不同的格式:ul li、table 或 div 内的简单标签。
  2. 菜单链接可以是图像(代码应使用 alt 或标题标签)

我的问题:

  1. 是否有可能以某种方式分析链接内容以确保它们是链接?等等,如果href具有相同的域名href="http://domain.com/link"或者是本地的 href="/link"
  2. 我怎样才能像通常那样排除语言切换按钮domain.com/ENen.doamin.com?它们与真正的菜单导航链接非常相​​似。

我希望你明白这一点。

最好的,马蒂

4

1 回答 1

0

此正则表达式测试给定字符串是否为 url:

^(http[s]?://|ftp://)?(www\.)?[a-zA-Z0-9-\.]+\.(com|org|net|mil|edu|ca|co.uk|com.au|gov|br)$

你可以实施一些 preg_match 测试......希望它有所帮助

参考:

http://php.net/manual/en/function.preg-match.php

[编辑]

变量 $thePath 应该为您带来当前站点 url:

$theProtocol = (strpos(strtolower($_SERVER['SERVER_PROTOCOL']), 'https') === false) ? 'http' : 'https';
$thePath = $theProtocol.'://'.$_SERVER['SERVER_NAME'];

因此,您可以将匹配字符串与变量内容进行比较,然后确定您是否正在操作内部链接。

这应该会有所帮助:

function str_starts_with($haystack, $needle, $caseSensitive = true){
        if($caseSensitive)
            return strpos($haystack, $needle) === 0;
        else
            return stripos($haystack, $needle) === 0;
    }
于 2013-09-05T16:36:13.580 回答