一个Delphi / FreePascal的lib或功能模拟了PHP的函数parse_url(A D

2019-06-28 08:51发布

我做的Object Pascal中的一个站点地图生产商,需要一个良好的功能或LIB效仿parse_url PHP的功能。

有谁知道任何好的吗?

Answer 1:

FreePascal的具有与ParseURI功能单元URIParser。 一个例子如何使用它可以在例如一个被发现FreePascal的的来源 。 或老例子是比较容易理解。



Answer 2:

我不熟悉PHP上的parse_url功能,但你可以尝试TIdURI附带类印 (这又是包含在最新的德尔福版本)。 我想他们也移植到FreePascal的为好。

TIdURI是TObject的后代封装统一资源标识符,作为互联网标准文档中描述:

RFC 1630 -统一资源标识符在WWW

TIdURI提供了组装和使用的组成部件构成的URI,包括URI的拆卸方法和属性:协议,主机,端口,路径,文档,和书签。

如果还是不行,请给你所要完成什么具体的例子- 你在试图分析出一个URL的



Answer 3:

小心Indy的TIdURI类。 它应该是一个通用的解析器,但它在这几个错误和设计缺陷,防止它被完全兼容的解析器。 我目前在从头开始编写一个新的类印11,以取代TIdURI的过程。 这将是一个完全符合URI语法分析器,它也将支承实IRI(RFC 3987)解析为好。



Answer 4:

如果您使用的wininet.dll你也可以使用自己的InternetCrackUrl API。



Answer 5:

该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必须提供,因此,抓住一个与您的帕斯卡实现兼容,你去那里。



文章来源: A Delphi/FreePascal lib or function that emulates the PHP's function parse_url