2024-10-02 02:37:08 发布
网友
许多网站在url链接中添加标签以进行跟踪,例如
http://www.washingtonpost.com/blogs/answer-sheet/post/report-we-still-dont-know-much-about-charter-schools/2012/01/13/gIQAxMIeyP_blog.html?wprss=linkset&tid=sm_twitter_washingtonpost
如果我们切除阑尾“?wprss=linkset&tid=sm_twitter_washingtonpost”,仍将转到同一页面。 有没有什么通用的方法可以消除这些冗余元素?任何评论都会有帮助。在
谢谢!在
删除URL中的查询字符串:
<?php $url = 'http://www.washingtonpost.com/blogs/answer-sheet/post/report-we-still-dont-know-much-about-charter-schools/2012/01/13/gIQAxMIeyP_blog.html?wprss=linkset&tid=sm_twitter_washingtonpost'; $url = explode('?',$url); $url = $url[0]; //check output echo $url; ?>
检查URL是否有效:
您可以使用PHP函数get_headers($url)。示例:
get_headers($url)
可以使用正则表达式:
$yourUrl = preg_replace("/[?].*/","",$yourUrl);
意思是:“用一个空字符串替换问号和后面的所有内容”。在
在Python中使用^{}:
import urlparse url = urlparse.urlsplit(URL) # parse url print urlparse.urlunsplit(url[:3]+('','')) # remove query, fragment parts
或者是一种更轻量级的方法,但它可能不那么通用:
根据rfc 3986,可以使用正则表达式解析URI:
/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/
因此,如果没有片段标识符(上面的regex中的最后一部分)或查询组件存在(从第二部分到最后一部分),那么URL.partition('?')[0]应该可以工作,否则将在“?”上拆分一个url会失败,例如
URL.partition('?')[0]
http://example.com/path#here-?-ereh
但是urlparse回答仍然是works。在
urlparse
在Python中:
import urllib2 try: resp = urllib2.urlopen(URL) except IOError, e: print "error: can't open %s, reason: %s" % (URL, e) else: print "success, status code: %s, info:\n%s" % (resp.code, resp.info()),
resp.read()可用于读取页面内容。在
resp.read()
删除URL中的查询字符串:
检查URL是否有效:
您可以使用PHP函数
^{pr2}$get_headers($url)
。示例:可以使用正则表达式:
意思是:“用一个空字符串替换问号和后面的所有内容”。在
要删除查询,请从URL
在Python中使用^{} :
或者是一种更轻量级的方法,但它可能不那么通用:
^{pr2}$根据rfc 3986,可以使用正则表达式解析URI:
因此,如果没有片段标识符(上面的regex中的最后一部分)或查询组件存在(从第二部分到最后一部分),那么
URL.partition('?')[0]
应该可以工作,否则将在“?”上拆分一个url会失败,例如但是
urlparse
回答仍然是works。在检查是否可以通过URL访问页面
在Python中:
resp.read()
可用于读取页面内容。在相关问题 更多 >
编程相关推荐