PHP通过URL解析特定站点上的导航链接
Ia am计划从任何给定URL获取菜单元素(链接)。这意味着代码应该从站点上存在的所有其他链接中筛选菜单链接(用于在特定站点内导航的链接) 我一直计划使用simplehtmldom,就像我以前使用它解析内容一样 问题:PHP通过URL解析特定站点上的导航链接,php,html,simple-html-dom,Php,Html,Simple Html Dom,Ia am计划从任何给定URL获取菜单元素(链接)。这意味着代码应该从站点上存在的所有其他链接中筛选菜单链接(用于在特定站点内导航的链接) 我一直计划使用simplehtmldom,就像我以前使用它解析内容一样 问题: 菜单链接容器的格式可以不同:ulli、table或div中的简单标记 菜单链接可以是图像(然后代码应使用alt或title标记) 我的问题: 是否有可能以某种方式分析链接内容,以确保它们是链接? 等。如果href具有相同的域名href=”http://domain.com/lin
href=”http://domain.com/link“
或是本地的href=“/link”
domain.com/EN
或EN.doamin.com
?它们与真正的菜单导航链接非常相似Martti此正则表达式测试给定字符串是否为url:
^(http[s]?://|ftp://)?(www\.)?[a-zA-Z0-9-\.]+\.(com|org|net|mil|edu|ca|co.uk|com.au|gov|br)$
您可以实施一些预匹配测试。。。希望能有帮助
参考:
[编辑]
变量$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;
}
var\u转储(筛选变量('http://example.com,过滤器(验证URL))密码>密码到底是干什么的,汉基?谢谢。但是如果我使用simplehtmldom,那么我通过或href获取内容,因此我已经知道它们都是链接。问题是要找出其中哪些是用于在站点内部导航的链接。我正在使用//查找每个($html->find('a')as$element)echo$element->href的所有链接
'
查找页面上的所有链接,并$parse=parse\u url($url)$scheme=$parse['scheme']$host=$parse['host']
以获取域和方案。现在我需要一个函数来过滤掉内部链接。我发现了这个。也许你能告诉我是怎么做到的