Frage

Ich bin eine Sitemap Hersteller in Object Pascal tun und brauchen eine gute Funktion oder lib die parse_url Funktion auf PHP.

Kennt jemand irgendwelche guten?

War es hilfreich?

Lösung

Freepascal hat das Gerät UriParser mit der ParseURI Funktion. Ein Beispiel, wie man es verwenden kann, in einem Beispiel, das in Freepascal der Quelle . Oder ein altes Beispiel die etwas leichter zu verstehen.

Andere Tipps

Ich bin nicht mit der parse_url Funktion auf PHP vertraut, aber Sie könnten die TIdURI Klasse, die mit enthalten ist Indy (der wiederum mit neuesten Delphi Versionen enthalten). Ich denke, dass sie es zu Freepascal portiert als auch.

  

TIdURI ist ein TObject Nachkomme, der eine Universal Resource Identifier verkapselt, wie im Internet Standard Dokument beschrieben:

     
    

RFC 1630 - Universal Resource Identifiers in WWW

  
     

TIdURI stellt Methoden und Eigenschaften für die Montage und Demontage von URIs die Bauteile verwenden, die die URI bilden, einschließlich:. Protokoll, Host, Port, Pfad, Dokument, und Lesezeichen

Wenn das nicht funktioniert, benutzen Sie bitte ein konkretes Beispiel für das, was Sie versuchen zu erreichen -. was Sie versuchen, aus einer URL zu analysieren

Seien Sie vorsichtig mit Indys TIdURI Klasse. Es sollte ein Allzweck-Parser sein, aber es hat ein paar Fehler und Design-Fehler darin, dass sie sich von einem vollständig konformen Parser verhindern. Ich bin derzeit in den Prozess für Indy 11 eine neue Klasse von Grund auf neu zu schreiben TIdURI zu ersetzen. Es wird ein vollständig konformer URI-Parser sein, und es wird auch IRI (RFC 3987) suppor als auch das Parsen.

Wenn Sie mit wininet.dll Sie auch ihre InternetCrackUrl API.

Der URI RFC diesen regulären Ausdruck für URI Parsing auflistet:

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

Wo die Zahlen sind diese Gruppen:

  $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

Für diesen URI:

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

Der reguläre Ausdruck ist ziemlich einfach und verwendet keine Besonderheiten der reguläre Ausdruck lib zu bieten hat, so dass man greifen, die mit Ihrem pascal Implementierung kompatibel ist und los geht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top