我使用脚本检查给定页面上的链接。我使用简单的html DOM将信息解析成数组。我必须检查所有标签的href,以查找它们是否包含文件或类似#或JS的内容。
我尝试了以下但没有成功。
if(preg_match("|^(.*)|iU", $href)){
save_link();
}
我不知道我的模式是错误的还是有更好的方法来完成这个功能。
我希望能够检测$ href是否包含.com .php .file扩展名。这样它就会过滤出像#“function()”这样的项目以及href属性中使用的其他项目。
编辑: parse_url将无法停止发布它。值#返回为有效网址,就像我上面所说的那样,我正在尝试查找任何字符串,后面跟着。*,后跟不超过4个字符。
答案 0 :(得分:0)
您可以使用parse_url(),如下所示:
$res = parse_url($href);
if ( $res['scheme'] == 'http' || $res['scheme'] == 'https'){
//valid url
save_link();
}
<强>更新强>
我添加了代码,仅过滤 http 和 https 网址,感谢Baba发现此信息。
答案 1 :(得分:0)
我相信您正在寻找的功能是parse_url()
。
此函数将获取一个URL字符串,并返回一个组件数组,这将允许您计算出它是什么类型的URL。
但请注意,在5.4.7之前的PHP版本中,它存在URL不完整的问题,因此您需要使用最新的PHP来充分利用它。
希望有所帮助。
答案 2 :(得分:0)
请参阅http://php.net/manual/en/function.parse-url.php
我假设您不想匹配片段(#),因为您不关心跟随内部锚点。
parse_url将url的不同部分分解为数组。您可以在此数组中查看URL的路径组件,并对其进行检查。