一个Delphi/FreePascal库或函数,模拟PHP';s函数解析url
我正在用ObjectPascal做一个站点地图生成器,需要一个好的函数或库来在PHP上模拟这个函数 有人知道有什么好的正则表达式吗?列出了用于URI解析的正则表达式:一个Delphi/FreePascal库或函数,模拟PHP';s函数解析url,delphi,parsing,freepascal,url-parsing,Delphi,Parsing,Freepascal,Url Parsing,我正在用ObjectPascal做一个站点地图生成器,需要一个好的函数或库来在PHP上模拟这个函数 有人知道有什么好的正则表达式吗?列出了用于URI解析的正则表达式: ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? 12 3 4 5 6 7 8 9 其中数字为这些组: $1 = http: $2 = http $3 = //www.ic
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
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
正则表达式非常简单,并且不使用正则表达式库必须提供的特殊功能,因此,请获取一个与您的pascal实现兼容的正则表达式。我不熟悉PHP上的parse_url函数,但您可以尝试其中包含的类(这也包括在最新的Delphi版本中)我认为他们也将其移植到了FreePascal TIdURI是一个ToObject子体,它封装了通用资源标识符,如Internet标准文档中所述: TIdURI使用组成URI的组件部件(包括:协议、主机、端口、路径、文档和书签)提供组装和反组装URI的方法和属性
如果这不起作用,请给出一个具体的示例,说明您正在尝试完成的任务-您正在试图从URL解析什么。如果您使用的是wininet.dll,您也可以使用他们的API。Freepascal的unit URIParser带有ParseURI函数。可以在中的一个示例中找到如何使用它的示例。或者我在这有点容易理解。小心使用Indy的TIdURI类。它本来应该是一个通用解析器,但它有一些bug和设计缺陷,使它无法成为完全兼容的解析器。我目前正在从头开始为Indy 11编写一个新类来取代TIdURI。它将是一个完全兼容的解析器URI解析器,它还将支持IRI(RFC 3987)也进行解析。这是否接受部分URL和包含登录名/密码的URL?我接受了Loesje的回答,因为我发现FreePascal的uriparser单元有一个ResolveRelativeUri,这更符合我的要求。我确实查看了TidURI单元,我非常喜欢它。我没有进行足够的调查,以找到类似FreePascal的ResolveRelativeUri()。听起来不错,你有专门的链接吗?或者我应该等Indy 11吗?你完成过网站地图制作吗?
http://www.ics.uci.edu/pub/ietf/uri/#Related