【发布时间】:2008-09-23 21:56:29
【问题描述】:
我正在使用 Object Pascal 制作站点地图,需要一个好的函数或库来模拟 PHP 上的 parse_url 函数。
有谁知道有什么好的吗?
【问题讨论】:
-
你完成了站点地图制作吗?
标签: delphi parsing freepascal url-parsing
我正在使用 Object Pascal 制作站点地图,需要一个好的函数或库来模拟 PHP 上的 parse_url 函数。
有谁知道有什么好的吗?
【问题讨论】:
标签: delphi parsing freepascal url-parsing
Freepascal 具有带有 ParseURI 功能的单元 URIParser。如何使用它的示例可以在Freepascal's source 中的示例之一中找到。或者一个更容易理解的old example。
【讨论】:
【讨论】:
小心 Indy 的 TIdURI 类。它应该是一个通用的解析器,但它有一些错误和设计缺陷,使其无法成为一个完全兼容的解析器。我目前正在从头开始为 Indy 11 编写一个新类来替换 TIdURI。它将是一个完全兼容的 URI 解析器,它还将支持 IRI (RFC 3987) 解析。
【讨论】:
如果您使用的是 wininet.dll,您也可以使用他们的InternetCrackUrl API。
【讨论】:
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 实现兼容的功能。
【讨论】: