Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个Delphi/FreePascal库或函数,模拟PHP';s函数解析url_Delphi_Parsing_Freepascal_Url Parsing - Fatal编程技术网

一个Delphi/FreePascal库或函数,模拟PHP';s函数解析url

一个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

我正在用ObjectPascal做一个站点地图生成器,需要一个好的函数或库来在PHP上模拟这个函数

有人知道有什么好的正则表达式吗?

列出了用于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

正则表达式非常简单,并且不使用正则表达式库必须提供的特殊功能,因此,请获取一个与您的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