我在Object Pascal中做了一個站點地圖生產者,需要一個很好的函數或lib來模擬PHP上的parse_url函數。模擬PHP函數的Delphi/FreePascal函數庫或函數parse_url
有誰知道任何好的?
我在Object Pascal中做了一個站點地圖生產者,需要一個很好的函數或lib來模擬PHP上的parse_url函數。模擬PHP函數的Delphi/FreePascal函數庫或函數parse_url
有誰知道任何好的?
Freepascal擁有帶ParseURI功能的單元URIParser。一個示例如何使用它可以在Freepascal's source的示例之一中找到。或者一個old example這是比較容易理解。
的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具有的特殊功能o提供,所以抓住一個與你的pascal實現兼容的,並且你去了。
是否接受部分網址和包含登錄名/密碼的網址? – 2008-09-23 22:02:55
我不熟悉PHP上的parse_url函數,但是您可以嘗試Indy(隨後包含在最新的Delphi版本中)中包含的TIdURI類。我認爲他們也將它移植到FreePascal。
TIdURI是TObject的後代一個封裝通用資源標識符,隨着互聯網的標準文獻中描述:
TIdURI提供URI的組裝和拆卸的方法和屬性使用構成URI的組成部分,包括:協議,主機,端口,路徑,文檔和書籤。
如果還是不行,請給你所要完成什麼具體的例子 - 你在試圖分析出一個URL的。
我接受了Loesje的回答,因爲我發現一個FreePascal的uriparser單元有一個ResolveRelativeUri,這更多的是我正在尋找的。 我確實看過了TidURI單元,我非常喜歡它。我沒有充分發現像FreePascal的ResolveRelativeUri()這樣的東西。 – 2008-09-24 13:11:59
如果你使用wininet.dll,你也可以使用他們的InternetCrackUrl API。
請小心Indy的TIdURI課程。它應該是一個通用的解析器,但它有一些缺陷和設計缺陷,使它無法成爲完全兼容的解析器。我目前正在爲Indy 11從頭開始編寫一個新類來替換TIdURI。它將是一個完全兼容的URI解析器,它也將支持IRI(RFC 3987)解析。
這聽起來不錯,你有一個特定的鏈接,或者我應該等待Indy 11? – 2009-02-12 13:40:35
你有沒有完成網站地圖製作人? – 2015-07-17 02:28:06