繁体   English   中英

PHP检查href是否为文件

[英]PHP check if href is a file

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

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

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

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

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

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

您可以像这样使用parse_url()

$res = parse_url($href);
if ( $res['scheme'] == 'http' ||  $res['scheme'] == 'https'){
    //valid url
    save_link();
}

更新:
我添加了仅过滤httphttps网址的代码,这要感谢Baba的发现。

我相信您正在寻找的功能是parse_url()

此函数将使用一个URL字符串,并返回一个组成部分的数组,这将使您可以确定它是哪种URL。

但是请注意,在5.4.7之前的PHP版本中,URL存在不完整的问题,因此您需要拥有最新的PHP才能充分利用它。

希望能有所帮助。

参见http://php.net/manual/en/function.parse-url.php

我假设您不想匹配片段(#),因为您不关心跟随内部锚点。

parse_url将url的不同部分分解为一个数组。 您可以在此数组中看到URL的路径部分,并对此进行检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM