2

Object Pascalでサイトマッププロデューサーを実行していますが、PHPでparse_url関数をエミュレートするための優れた関数またはlibが必要です。

誰か良いものを知っていますか?

4

5 に答える 5

2

Freepascalには、ParseURI関数を備えたユニットURIParserがあります。使用方法の例は、Freepascalのソースの例の1つにあります。または、やや理解しやすい古い例。

于 2008-09-24T09:11:45.780 に答える
2

私はPHPのparse_url関数に精通していませんが、 Indyに含まれているTIdURIクラス(最新のDelphiリリースに含まれている)を試してみてください。彼らはそれをFreePascalにも移植したと思います。

TIdURIは、インターネット標準のドキュメントで説明されているように、UniversalResourceIdentifierをカプセル化するTObjectの子孫です。

RFC1630-WWWのUniversalResourceIdentifiers

TIdURIは、プロトコル、ホスト、ポート、パス、ドキュメント、ブックマークなど、URIを構成するコンポーネントパーツを使用してURIをアセンブリおよび逆アセンブリするためのメソッドとプロパティを提供します。

それでもうまくいかない場合は、達成しようとしていることの具体例を挙げてください。URLから何を解析しようとしているのでしょうか

于 2008-09-23T22:30:16.883 に答える
2

Indy の TIdURI クラスには注意してください。これは汎用パーサーであるはずでしたが、いくつかのバグと設計上の欠陥があり、完全に準拠したパーサーにはなりませんでした。現在、TIdURI を置き換えるために、Indy 11 の新しいクラスをゼロから作成している最中です。これは完全に準拠した URI パーサーであり、IRI (RFC 3987) の解析もサポートします。

于 2009-02-02T01:55:46.197 に答える
1

wininet.dll を使用している場合は、そのInternetCrackUrl API も使用できます。

于 2008-09-24T06:21:18.233 に答える
0

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

正規表現は非常にシンプルで、正規表現ライブラリが提供する特別な機能を使用していないため、パスカル実装と互換性のあるものを取得してください。

于 2008-09-23T22:00:33.197 に答える