Pergunta

Eu estou fazendo um produtor mapa do site em Object Pascal e precisa de uma função bem ou lib para emular o parse_url função em PHP.

Alguém sabe de qualquer bons?

Foi útil?

Solução

Freepascal tem a UriParser unidade com a função ParseURI. Um exemplo de como usá-lo pode ser encontrado em um dos exemplo em o Freepascal fonte . Ou um idade exemplo que é um pouco mais fácil de entender.

Outras dicas

Eu não estou familiarizado com a função parse_url em PHP, mas você pode tentar o classe TIdURI que acompanha casa Indy (que por sua vez está incluída com a maioria dos lançamentos recentes Delphi). Eu acho que eles portou para FreePascal também.

TIdURI é um descendente TObject que encapsula um Universal Resource Identifier, conforme descrito no documento Internet Standards:

RFC 1630 - Universal Resource Identificadores na WWW

TIdURI fornece métodos e propriedades para montagem e desmontagem de URIs usando os componentes que compõem o URI, incluindo:. Protocolo, host, porta Path, Documento, e Bookmark

Se isso não funcionar, por favor, dê um exemplo específico do que você está tentando realizar -. o que você está tentando analisar a partir de uma URL

Tenha cuidado com classe TIdURI da Indy. Era suposto ser um analisador de uso geral, mas tem alguns bugs e falhas de projeto em que o impedem de ser um analisador totalmente compatível. Eu estou atualmente no processo de escrever uma nova classe a partir do zero para Indy 11 para substituir TIdURI. Será um analisador URI totalmente compatível, e que também irá suppor IRI (RFC 3987) analisar bem.

Se você estiver usando wininet.dll você também pode usar o InternetCrackURL API.

O URI RFC listas Esta expressão regular para URI parsing:

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

Quando os números são esses grupos:

  $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

Para este URI:

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

A expressão regular é bastante simples e não usa especial apresenta a expressão regular lib tem para oferecer, então pegue um que seja compatível com a sua implementação pascal e lá vai você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top