Question

Je suis un producteur de sitemap dans Object Pascal et j'ai besoin d'une bonne fonction ou d'une bibliothèque pour émuler le parse_url sur PHP.

Est-ce que quelqu'un connaît de bons?

Était-ce utile?

La solution

IPPERASCAL a l’unité URIParser avec la fonction ParseURI. Vous trouverez un exemple d'utilisation dans l'un des exemples de La source deaspascal . Ou bien un ancien exemple qui est un peu plus facile à comprendre.

Autres conseils

Je ne connais pas bien la fonction parse_url sur PHP, mais vous pouvez essayer le La classe TIdURI incluse dans la Indy (qui est à son tour inclus dans les dernières versions de Delphi). Je pense qu'ils l'ont également porté sur FreePascal.

  

TIdURI est un descendant de TObject qui encapsule un identificateur de ressource universel, comme décrit dans le document relatif aux normes Internet:

     
    

RFC 1630 - Identificateurs de ressources universels dans le WWW

  
     

TIdURI fournit des méthodes et des propriétés pour l’assemblage et le désassemblage d’URI à l’aide des composants composant l’URI, notamment: Protocole, Hôte, Port, Chemin, Document et Signet.

Si cela ne fonctionne pas, donnez un exemple spécifique de ce que vous essayez d'accomplir: essayez-vous d'analyser une URL .

Faites attention avec la classe TIdURI d'Indy. Il était supposé être un analyseur généraliste, mais il comporte quelques bugs et défauts de conception qui l’empêchent d’être un analyseur totalement conforme. Je suis en train d'écrire une nouvelle classe à partir de rien pour Indy 11 en remplacement de TIdURI. Ce sera un analyseur URI entièrement conforme, et il soutiendra également l’analyse IRI (RFC 3987).

Si vous utilisez wininet.dll, vous pouvez également utiliser leur API InternetCrackUrl .

Le RFC URI répertorie cette expression régulière pour l'analyse URI:

  ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
   12            3  4          5       6  7        8 9

Où les nombres sont ces groupes:

  $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

Pour cet URI:

  http://www.ics.uci.edu/pub/ietf/uri/#Related

L’expression régulière est assez simple et n’utilise pas les fonctionnalités spéciales que libère l’expression régulière que lib doit fournir, alors choisissez-en une compatible avec votre implémentation pascal et le tour est joué.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top