Object Pascalでサイトマッププロデューサーを実行していますが、PHPでparse_url関数をエミュレートするための優れた関数またはlibが必要です。
誰か良いものを知っていますか?
Object Pascalでサイトマッププロデューサーを実行していますが、PHPでparse_url関数をエミュレートするための優れた関数またはlibが必要です。
誰か良いものを知っていますか?
Freepascalには、ParseURI関数を備えたユニットURIParserがあります。使用方法の例は、Freepascalのソースの例の1つにあります。または、やや理解しやすい古い例。
私はPHPのparse_url関数に精通していませんが、 Indyに含まれているTIdURIクラス(最新のDelphiリリースに含まれている)を試してみてください。彼らはそれをFreePascalにも移植したと思います。
TIdURIは、インターネット標準のドキュメントで説明されているように、UniversalResourceIdentifierをカプセル化するTObjectの子孫です。
TIdURIは、プロトコル、ホスト、ポート、パス、ドキュメント、ブックマークなど、URIを構成するコンポーネントパーツを使用してURIをアセンブリおよび逆アセンブリするためのメソッドとプロパティを提供します。
それでもうまくいかない場合は、達成しようとしていることの具体例を挙げてください。URLから何を解析しようとしているのでしょうか。
Indy の TIdURI クラスには注意してください。これは汎用パーサーであるはずでしたが、いくつかのバグと設計上の欠陥があり、完全に準拠したパーサーにはなりませんでした。現在、TIdURI を置き換えるために、Indy 11 の新しいクラスをゼロから作成している最中です。これは完全に準拠した 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
正規表現は非常にシンプルで、正規表現ライブラリが提供する特別な機能を使用していないため、パスカル実装と互換性のあるものを取得してください。