我在Object Pascal中做了一个站点地图生产者,需要一个很好的函数或lib来模拟PHP上的parse_url函数。模拟PHP函数的Delphi/FreePascal函数库或函数parse_url
有谁知道任何好的?
我在Object Pascal中做了一个站点地图生产者,需要一个很好的函数或lib来模拟PHP上的parse_url函数。模拟PHP函数的Delphi/FreePascal函数库或函数parse_url
有谁知道任何好的?
Freepascal拥有带ParseURI功能的单元URIParser。一个示例如何使用它可以在Freepascal's source的示例之一中找到。或者一个old example这是比较容易理解。
的URI RFC列出这个正则表达式的URI解析:
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
12 3 4 5 6 7 8 9
凡数字是这些群体:
$1 = http:
$2 = http
$3 = //www.ics.uci.edu
$4 = www.ics.uci.edu
$5 = /pub/ietf/uri/
$6 = <undefined>
$7 = <undefined>
$8 = #Related
$9 = Related
对于这个URI:
http://www.ics.uci.edu/pub/ietf/uri/#Related
的正则表达式非常简单并且没有使用正则表达式lib具有的特殊功能o提供,所以抓住一个与你的pascal实现兼容的,并且你去了。
是否接受部分网址和包含登录名/密码的网址? – 2008-09-23 22:02:55
我不熟悉PHP上的parse_url函数,但是您可以尝试Indy(随后包含在最新的Delphi版本中)中包含的TIdURI类。我认为他们也将它移植到FreePascal。
TIdURI是TObject的后代一个封装通用资源标识符,随着互联网的标准文献中描述:
TIdURI提供URI的组装和拆卸的方法和属性使用构成URI的组成部分,包括:协议,主机,端口,路径,文档和书签。
如果还是不行,请给你所要完成什么具体的例子 - 你在试图分析出一个URL的。
我接受了Loesje的回答,因为我发现一个FreePascal的uriparser单元有一个ResolveRelativeUri,这更多的是我正在寻找的。 我确实看过了TidURI单元,我非常喜欢它。我没有充分发现像FreePascal的ResolveRelativeUri()这样的东西。 – 2008-09-24 13:11:59
如果你使用wininet.dll,你也可以使用他们的InternetCrackUrl API。
请小心Indy的TIdURI课程。它应该是一个通用的解析器,但它有一些缺陷和设计缺陷,使它无法成为完全兼容的解析器。我目前正在为Indy 11从头开始编写一个新类来替换TIdURI。它将是一个完全兼容的URI解析器,它也将支持IRI(RFC 3987)解析。
这听起来不错,你有一个特定的链接,或者我应该等待Indy 11? – 2009-02-12 13:40:35
你有没有完成网站地图制作人? – 2015-07-17 02:28:06