【问题标题】:A Delphi/FreePascal lib or function that emulates the PHP's function parse_url模拟 PHP 函数 parse_url 的 Delphi/FreePascal 库或函数
【发布时间】:2008-09-23 21:56:29
【问题描述】:

我正在使用 Object Pascal 制作站点地图,需要一个好的函数或库来模拟 PHP 上的 parse_url 函数。

有谁知道有什么好的吗?

【问题讨论】:

  • 你完成了站点地图制作吗?

标签: delphi parsing freepascal url-parsing


【解决方案1】:

Freepascal 具有带有 ParseURI 功能的单元 URIParser。如何使用它的示例可以在Freepascal's source 中的示例之一中找到。或者一个更容易理解的old example

【讨论】:

    【解决方案2】:

    我不熟悉 PHP 上的 parse_url 函数,但您可以尝试 Indy 中包含的 TIdURI 类(该类又包含在最新的 Delphi 版本中)。我认为他们也将其移植到了 FreePascal。

    TIdURI 是封装了通用资源标识符的 TObject 后代,如 Internet 标准文档中所述:

    RFC 1630 - Universal Resource Identifiers in WWW

    TIdURI 提供方法和属性,用于使用构成 URI 的组件部分来组装和反汇编 URI,包括:协议、主机、端口、路径、文档和书签。

    如果这不起作用,请给出一个具体示例来说明您要完成的工作 - 您要从 URL 中解析出什么

    【讨论】:

    • 我接受了 Loesje 的回答,因为我发现 FreePascal 的 uriparser 单元有一个 ResolveRelativeUri,这更符合我的要求。我确实看过 TidURI Unit,我非常喜欢它。我没有仔细研究,找不到像 FreePascal 的 ResolveRelativeUri() 这样的东西。
    【解决方案3】:

    小心 Indy 的 TIdURI 类。它应该是一个通用的解析器,但它有一些错误和设计缺陷,使其无法成为一个完全兼容的解析器。我目前正在从头开始为 Indy 11 编写一个新类来替换 TIdURI。它将是一个完全兼容的 URI 解析器,它还将支持 IRI (RFC 3987) 解析。

    【讨论】:

    • 听起来不错,你有具体的链接吗,还是我应该等 Indy 11?
    【解决方案4】:

    如果您使用的是 wininet.dll,您也可以使用他们的InternetCrackUrl API。

    【讨论】:

      【解决方案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
      

      正则表达式非常简单,没有使用正则表达式库必须提供的特殊功能,因此请选择一个与您的 pascal 实现兼容的功能。

      【讨论】:

      • 这是否接受部分 URL 和包含登录名/密码的 URL?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多