我在 Object Pascal 中做一个站点地图生成器,需要一个好的函数或库来模拟 PHP 上的parse_url函数。
有谁知道有什么好的吗?
我在 Object Pascal 中做一个站点地图生成器,需要一个好的函数或库来模拟 PHP 上的parse_url函数。
有谁知道有什么好的吗?
Freepascal 具有带有 ParseURI 功能的单元 URIParser。如何使用它的示例可以在Freepascal 的源代码中的示例之一中找到。或者一个更容易理解的老例子。
小心 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 实现兼容的功能,然后就可以了。