Pregunta

Yo estoy haciendo un mapa de productor en Object Pascal y la necesidad de una buena función o lib para emular el parse_url función en PHP.

¿Alguien sabe de alguna buena?

¿Fue útil?

Solución

Freepascal tiene la unidad de URIParser con el ParseURI función.Un ejemplo de cómo utilizar puede ser encontrado en uno de los ejemplo en Freepascal de la fuente.O un viejo ejemplo que es algo más fácil de entender.

Otros consejos

Yo no estoy familiarizado con el parse_url función en PHP, pero usted puede probar la TIdURI la clase que se incluye con Indy (que a su vez se incluye con la mayoría de las recientes versiones de Delphi).Creo que es portado a FreePascal así.

TIdURI es un TObject descendiente que encapsula un Identificador de Recursos Universal, como se describe en el documento de Estándares de Internet:

RFC 1630 - Universal Identificadores de Recursos en WWW

TIdURI proporciona métodos y propiedades para el montaje y desmontaje de Uri utilizando los componentes que conforman la URI, incluyendo:Protocolo de Host, el Puerto, la Ruta, el Documento, y el Marcador.

Si eso no funciona, por favor dar un ejemplo concreto de lo que estamos tratando de lograr - ¿qué estás tratando de analizar de una URL.

Tenga cuidado con Indy TIdURI clase.Se suponía que iba a ser un propósito general analizador, pero tiene un par de bugs y fallos en el diseño que le impide ser totalmente compatible con el analizador.Actualmente estoy en el proceso de redacción de una nueva clase a partir de cero para Indy 11 para reemplazar TIdURI.Será totalmente compatible con URI analizador, y también el apoyo de IRI (RFC 3987) analizar así.

Si estás usando wininet.dll usted puede también utilizar sus InternetCrackUrl La API.

El URI RFC las listas de esta expresión regular para el URI de análisis:

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

Donde los números son estos 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

La expresión regular es bastante simple y no utiliza las características especiales de la expresión regular lib tiene para ofrecer, así que coge una que sea compatible con su pascal implementación y hay que ir.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top