PHP检查href是否是文件

时间:2012-10-12 19:40:28

标签: php preg-match

我使用脚本检查给定页面上的链接。我使用简单的html DOM将信息解析成数组。我必须检查所有标签的href,以查找它们是否包含文件或类似#或JS的内容。

我尝试了以下但没有成功。

if(preg_match("|^(.*)|iU", $href)){
    save_link();
}

我不知道我的模式是错误的还是有更好的方法来完成这个功能。

我希望能够检测$ href是否包含.com .php .file扩展名。这样它就会过滤出像#“function()”这样的项目以及href属性中使用的其他项目。

编辑: parse_url将无法停止发布它。值#返回为有效网址,就像我上面所说的那样,我正在尝试查找任何字符串,后面跟着。*,后跟不超过4个字符。

3 个答案:

答案 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的路径组件,并对其进行检查。