[英]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();
}
更新:
我添加了仅过滤http和https网址的代码,这要感谢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.